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

Imperfect restart with uv_sponges #1430

Closed
kshedstrom opened this issue Jun 20, 2021 · 6 comments
Closed

Imperfect restart with uv_sponges #1430

kshedstrom opened this issue Jun 20, 2021 · 6 comments

Comments

@kshedstrom
Copy link
Collaborator

On restart, the h field on the outside of the domain comes in as 1.e-10. It is used as such to find the h_col field for the uv_sponges right at the edge, differing from the h_col value found later on in the run, in which h has been set to be an image of the interior value. It probably wouldn't matter if there were no open boundaries.

Options:

  1. Set h outside before the call to the sponges.
  2. Add OBC code to the uv_sponges.

As I recall, h outside had some nonsense value on startup as well, different from the restart nonsense value.

By the way, my Bering domain with sponges gives slightly different answers optimized and not. We don't want this behavior, do we?

@MJHarrison-GFDL
Copy link
Contributor

@kshedstrom . Shouldn't we be disabling the uv_sponges at the boundary ?

@kshedstrom
Copy link
Collaborator Author

OK, that's a third option, but we should enforce it via MOM6 code, not count on people to build the sponge weights with zeros at the edges. @MJHarrison-GFDL @adcroft @Hallberg-NOAA

@MJHarrison-GFDL
Copy link
Contributor

@kshedstrom After the call to horiz_interp, mask_z is not filled in the halos. Adding a pass_var and replacing the definition of mask_uv with min(ij, ij+1) instead of max(ij,ij+1) would eliminate the sponging at the OBC points.

@abozec
Copy link
Collaborator

abozec commented Jun 22, 2021

@kshedstrom @MJHarrison-GFDL, just an FYI, I've just sent a pull request that get reproducibility with sponge_uv (SpongeNotOnGrid) and OBC, but that required a mask at 0. for the u and v sponge variable.

@kshedstrom
Copy link
Collaborator Author

In thinking about it, in other places the OBC code makes sure that outside values are never, ever used. I'm not sure why h outside ever gets set because we don't want to be using it for anything. The OBCs everywhere demands that you don't depend on outside values since one point can be the image point for more than one interior point.

@kshedstrom
Copy link
Collaborator Author

Closed by #1434

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

3 participants