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

Support for non-uniform observations? #15

Open
Balinus opened this issue Jun 17, 2022 · 4 comments
Open

Support for non-uniform observations? #15

Balinus opened this issue Jun 17, 2022 · 4 comments

Comments

@Balinus
Copy link

Balinus commented Jun 17, 2022

Hello!

Before I try to call an external model in C++, I wanted to know if there is a support for non-uniform observations? For example, here's our constraint with a hydrological model. We want to assimilate snow data that are gathered "randomly" by human.

  • Our observations are not "periodic" : most years, but not always, observations are available on February 15th, March 1st-15th, April 1st (those date, for a given year, can be displaced by some days. i.e. instead of Feb 15, March1 and 15, it could be Feb 16, Feb 28, March 16, ...)
  • Rest of the year, there are no observations
  • Some year, we have continuous obs between February and May

Cheers|

@Alexander-Barth
Copy link
Owner

Alexander-Barth commented Jun 17, 2022

Well for the high-level "driver" functions uniform observations are indeed required but not the underlying anlysis routines. It should be easy to change to make H and R time variant, but what could be a sensible API? The observations yo is currently just an array space x time. I see these possibilities:

  1. get an extra time dimension of H and R (like the observations)
  2. H and R are vectors of matrices (potentially lazily generated)
  3. H and R could be function of the time (or time index), when called e.g. R(t) would return a matrix

Maybe we need also to revise the way observations are handled.

@Balinus
Copy link
Author

Balinus commented Jun 17, 2022

Thanks!

I think option 3 makes sense. We have Matlab code that does this behaviour: based on t we extract the distributions of errors based on the time. Since this is snow, such an error goes to 0 for some conditions. Otherwise, notably with EnKF, there is constant creation of snow.

@Alexander-Barth
Copy link
Owner

I updated the driver functions as shown here:

https://alexander-barth.github.io/DataAssim.jl/dev/

H will be handled the same way as the model (because for some assimilation schemes all the same methods are used). For y (and R) I use a vector of vector (or matrices). But all elements can also be generated on the fly.

@Balinus
Copy link
Author

Balinus commented Jun 21, 2022

Thanks! I will take a look at those as soon as I find a way to call the external model 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants