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

Inhomogenous obs lead to artefacts #4

Open
ChrisC28 opened this issue Mar 15, 2023 · 6 comments
Open

Inhomogenous obs lead to artefacts #4

ChrisC28 opened this issue Mar 15, 2023 · 6 comments

Comments

@ChrisC28
Copy link
Contributor

It's very well known that the observations in the WOD are not homogeneously distributed in space (vertically or horizontally). CTD and glider casts have, for example, a high frequency vertical data, while XBTs and profiling floats have comparatively few. Gliders, CTDs and XBTs are closely distributed in space, but moorings and profiling floats aren't.

In my experiments with DIVAnd, this is causing artefacts. See figure below.

I'm currently trying to deal with this by pre-processing the observations in 2-steps:

  1. Vertical interpolation of the WOD ragged array to generate a cast on standard vertical levels. This should eliminate the vertical inhomogeneities;
  2. Superobing the observations onto the target grid - this will reduce, but not eliminate, the issues of inhomogenous distribution in space.
    I'm open to any further hints on how to deal with this issue. Clearly, the choices of correlation length scales are few, as well as the specification of the background analysis.

DIVA_nd_inhomogenous_artefacts

@ChrisC28
Copy link
Contributor Author

@croachutas did you encounter this issue in your oxygen atlas?

@croachutas
Copy link

croachutas commented Mar 15, 2023

Hi Chris,
Yeah, this is one of the reasons behind the choice of length scales (500x250km before applying the effects of velocity fields) used in my atlas, you use scales much shorter (<100km-ish) or weight the velocity field wrong (the older fortran DIVA implementation had a specific adevection weighting parameter for this by discussion with the DIVAnd devs during creation of the oxygen atlas says to just build it into your code as a multiplier to the velocities ETA: this includes scaling velocities as applicable to any time units in use) and the influence of obs doesn't get adequately propagated out.

Edit: What length scales are you using at the moment?

Edit: And vertically, I just used WOD's vertically gridded data rather than the 'raw' profiles. Might not work so well with non-WOD data...

@croachutas
Copy link

Looking at your DIVAnd_slice_WOD_synthetic.ipynb file...

  1. The signal to noise ratio (epsilon) looks rather high (100ish vs the around 1 Nathan and I used in the oxygen atlas).

  2. In older versions (and likely the current version) of DIVAnd correlation scales are in the same units as the grid scales pm and pn are inverses of (some of the various DIVAnd mask/domain setup functions will set pm and pn in 1/meters) but I don't know about DIVAnd_rectdom off hand, so, please check pm, pn and if they look to be in 1/meters (you end up with values about 1/50000 if using a 1/2deg-ish grid) then you'll need to specify your correlation scale in meters.

  3. You've got a correlation scale of 0.5, if pm, pn are in1/deg a given obs isn't going to make much contribution to grid-points that aren't directly adjacent to it (and if pm,pn are in 1/meters, well, even more so...), maybe try a correlation scale of 1.0 instead?

  4. As yet you haven't included the advection constraint, so you don't have any additional spreading of the influence of data beyond the 'simple' correlation length.

@ChrisC28
Copy link
Contributor Author

Awesome @croachutas ! Thanks for your advice. I work my way down your list and update you as it goes!

@ChrisC28
Copy link
Contributor Author

Well, it's not perfect, but it's a start!
The below figure follows @croachutas 's broad approach for creating a background field:

  • fit a quadratic with latitude to the temperature to create anomalies;
  • process the data, remove NANs and obvious outliers;
  • Use DIVAndrun with the x and y correlation length scales above to create an anomaly map;
  • Add back in the fit to latitude.
    CARS_test_v1

Only Argo data is used here (for simplicity). I'll begin looking at the influence of the other data ASA

I'll push the code through and we can use it as a base to begin tweaking.

@ChrisC28
Copy link
Contributor Author

Code has now been push to the repo:

https://github.com/CARSv2/cars-v2/blob/main/notebooks/Create_BG_Temperature_Field_Synthetic.ipynb

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