Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inflation not turned off while using obs_impact tool #777

Open
braczka opened this issue Nov 22, 2024 · 14 comments
Open

Inflation not turned off while using obs_impact tool #777

braczka opened this issue Nov 22, 2024 · 14 comments
Labels
CLM Community Land Model Documentation Improvements or additions to documentation inflation

Comments

@braczka
Copy link
Contributor

braczka commented Nov 22, 2024

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 braczka added Documentation Improvements or additions to documentation CLM Community Land Model inflation labels Nov 22, 2024
@braczka
Copy link
Contributor Author

braczka commented Nov 22, 2024

Shout out to @XueliHuo for identifying this issue.

@jlaucar
Copy link
Contributor

jlaucar commented Nov 25, 2024 via email

@braczka
Copy link
Contributor Author

braczka commented Nov 25, 2024

Yes -- I think you're understanding is correct, although I don't see where in the documentation a description of how the obs_impact tool is intended to interact with inflation. For example, inflation is not mentioned at all within the obs_impact tool section. I may be revealing my ignorance of how the code is supposed to work, but I don't see how the existing code limits the impact of inflation on state variables that are completely localized from the observations -- it appears the inflation is just tapered down according to the inflation 'damping' factor. Is this the intended functionality? When a state variable experiences no increment from an observation because of either spatial or variable localization, it seems like inflation should be prescribed a value = 1, and should not have memory of the prior inflation state. Maybe applying a different inflation flavor (different than 5) for this application is preferred.

@jlaucar
Copy link
Contributor

jlaucar commented Nov 25, 2024 via email

@mgharamti
Copy link
Contributor

Brett, if the state variable experiences no increment, the inflation is not updated either. When the state is not updated, the prior remains unchanged. The inflation algorithm is Bayesian and recursive in time, so if there is no update then we are left with the prior inflation distribution. Right now, the only way to reduce the impact of inflation in case of no update is through damping. Setting the inflation to 1 breaks the recursive nature of the scheme. I think you'll need to adapt the damping to your observation network frequency.

@braczka
Copy link
Contributor Author

braczka commented Nov 25, 2024

OK -- so my interpretation is the obs_impact tool is completely unrelated to the application of inflation, it simply turns off the adaptive nature of the inflation update (Bayesian, recursive nature) but still applies the inflation.

The use of damping in this case to address this issue is not ideal -- because it is my understanding the damping factor is applied universally across all DART state variables, so, in this case, that would not be appropriate, because of the different frequency of the observations. In the case where we want to turn off the recursive nature of the inflation update, toggling to 'NO_COPY_BACK' to immediately set the inflation = 1 seems preferred.

@braczka
Copy link
Contributor Author

braczka commented Nov 25, 2024

Another question -- in cases of spatial localization, where the state variable increments are downscaled based on the Gaspari-Cohn radius, how does inflation interact with the application of spatial localization? My impression is that the inflation would also be downscaled?

@mgharamti
Copy link
Contributor

Brett, yes we apply prior inflation before we update its value (mean and sd)!
Inflation is spatially localized just like the state. As you move away from the observation, the localization impact increases until you get to impact at all far away from the obs location.

@jlaucar
Copy link
Contributor

jlaucar commented Nov 25, 2024 via email

@braczka
Copy link
Contributor Author

braczka commented Nov 25, 2024

OK -- my final question. Is the reducing factor (localization of inflation) applied the same way to spatial localization and variable localization? In other words, is any localization (reducing factor) applied to inflation when using variable localization -- which is controlled through the obs_impact tool ? .

@mgharamti
Copy link
Contributor

Localization (final_factor in the code) is computed as the product of spatial localization and variable localization (obs_impact_tool) as Jeff mentioned. So, yes variable localization is accounted for when updating inflation.
For more details, look for cov_and_impact_factors in assim_tools_mod

@jlaucar
Copy link
Contributor

jlaucar commented Nov 25, 2024 via email

@braczka
Copy link
Contributor Author

braczka commented Nov 25, 2024

Thanks @jlaucar and @mgharamti. Even though variable localization is accounted for when updating inflation, it seems to me there is nothing in the code that enforces the condition that prior inflation = 1, when we know the increment = 0. This condition can only be enforced through assigning variables as 'NO_COPY_BACK'.

@jlaucar
Copy link
Contributor

jlaucar commented Nov 25, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLM Community Land Model Documentation Improvements or additions to documentation inflation
Projects
None yet
Development

No branches or pull requests

3 participants