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

Alternative remapping s/r #251

Merged
merged 5 commits into from
Jan 19, 2016
Merged

Alternative remapping s/r #251

merged 5 commits into from
Jan 19, 2016

Conversation

adcroft
Copy link
Collaborator

@adcroft adcroft commented Jan 19, 2016

Draft of low-level remapping written to unequivocally avoid overshoots and retain accurate conservation in presence of numerical round-off.

  • New s/r remap_via_sub_cells().
  • Not yet called by remapping_core().

Todo:

  • Change remapping/regridding API to use thicknesses.

- New function remap_via_sub_cells() returns to the idea of
  remapping by projection implemented via sub-cell integrals
  with a correction step to the sub-cell integrals that ensures
  accurate conservation.
- Also added a function for evaluating the average of a single
  cell's reconstruction over an interval within the cell.
- remap_by_via_sub_cells() is now remap_via_sub_cells()
- On exiting the cycling over sub-cells, the remap_via_sub_cells()
  routine did not have an target association for the very last sub-cell.
- Separated integral calculations into their own loop
  - will later help create a vectorized version of remapping.
- Expressed non-dimensional positions in terms of effective thickness
  so that positions are always bounded by source cell.
- Removed unused argument, dh, to average_value_ppoly().
- remappingUnitTests now tests remap_via_sub_cells()
@Hallberg-NOAA Hallberg-NOAA merged commit 6ae81b2 into mom-ocean:dev/master Jan 19, 2016
@adcroft adcroft deleted the user/aja/remap_refactor branch April 25, 2017 14:26
Hallberg-NOAA added a commit to Hallberg-NOAA/MOM6 that referenced this pull request Dec 4, 2022
  There are extra US%T_to_s scaling factors in the expressions for ustar_min
that were recently introduced with dev/gfdl PR mom-ocean#251; these are duplicative of
the scaling factor that is already being applied when the parameter OMEGA is
read in.  The resulting expressions for ustar_min therefore effectively have
units of [Z s T-2 ~> m s-1] when they should have units of [Z T-1 ~> m s-1].
Because ustar_min is a tiny floor on the magnitude of ustar, there is a range of
values of T_RESCALE_POWER that will give the same answers as when it is 0, but
for large enough values the answers will change, perhaps dramatically.  This
small commit removes these extra factors.  Answers will change for some large
values of T_RESCALE_POWER, but they are bitwise identical in the TC testing and
in MOM6-examples based regression tests with modest or negative values.
Hallberg-NOAA added a commit to Hallberg-NOAA/MOM6 that referenced this pull request Dec 16, 2022
  There are extra US%T_to_s scaling factors in the expressions for ustar_min
that were recently introduced with dev/gfdl PR mom-ocean#251; these are duplicative of
the scaling factor that is already being applied when the parameter OMEGA is
read in.  The resulting expressions for ustar_min therefore effectively have
units of [Z s T-2 ~> m s-1] when they should have units of [Z T-1 ~> m s-1].
Because ustar_min is a tiny floor on the magnitude of ustar, there is a range of
values of T_RESCALE_POWER that will give the same answers as when it is 0, but
for large enough values the answers will change, perhaps dramatically.  This
small commit removes these extra factors.  Answers will change for some large
values of T_RESCALE_POWER, but they are bitwise identical in the TC testing and
in MOM6-examples based regression tests with modest or negative values.
marshallward pushed a commit to Hallberg-NOAA/MOM6 that referenced this pull request Dec 18, 2022
  There are extra US%T_to_s scaling factors in the expressions for ustar_min
that were recently introduced with dev/gfdl PR mom-ocean#251; these are duplicative of
the scaling factor that is already being applied when the parameter OMEGA is
read in.  The resulting expressions for ustar_min therefore effectively have
units of [Z s T-2 ~> m s-1] when they should have units of [Z T-1 ~> m s-1].
Because ustar_min is a tiny floor on the magnitude of ustar, there is a range of
values of T_RESCALE_POWER that will give the same answers as when it is 0, but
for large enough values the answers will change, perhaps dramatically.  This
small commit removes these extra factors.  Answers will change for some large
values of T_RESCALE_POWER, but they are bitwise identical in the TC testing and
in MOM6-examples based regression tests with modest or negative values.
gustavo-marques pushed a commit to gustavo-marques/MOM6 that referenced this pull request Aug 30, 2023
* Add Leith+E

This commit adds the 2D Leith+E closure, which uses a modified 2D Leith biharmonic viscosity paired with a harmonic backscatter. ('Modified' here is not used in the same sense as 'modified 2D Leith'; it just means that the biharmonic coefficient is modified to account for enstrophy backscatter.) Variables are often named 'leithy' to refer to Leith+E.

The parameterization is controlled by three main entries in user_nl_mom:
1. USE_LEITHY = True
2. LEITH_CK = 1.0
3. LEITH_BI_CONST = 8.0

To use Leith+E you should have LAPLACIAN=True and BIHARMONIC=True. (It doesn't hurt to be explicit and also set LEITH_AH=False, along with any other viscous closures, but this is not required. If USE_LEITHY=True it will not use any of the other schemes. It does use the background value of the biharmonic coefficient as a minimum, but ignores the
background harmonic value.) LEITH_CK is the fraction of energy dissipated by the biharmonic term that gets backscattered by the harmonic term (it's a target; the backscatter rate is not exact.) Recommended values between 0 and 1. LEITH_BI_CONST is Upsilon^6 where Upsilon is the ratio between the grid scale and the dissipation scale for enstrophy.
Values should be greater than or equal to 1; 8 is a good place to start.

The code is sensitive to the background value of Ah; specifically, if Ah is too large, the code is unstable. This is because the backscatter coefficient is proportional to Ah, and if Ah is large then you get large backscatter. If your code is unstable, consider reducing, e.g., `AH_VEL_SCALE`.

* Background Ah

This commit updates the code so that it uses the background Ah as
a minimum. Previously, if `SMAGORINSKY_AH = True`, Leith+E would
use the Smag value of Ah as the minimum, which is incorrect.

* Improve logging

Removed `do_not_log` condition on `USE_LEITHY`

* Fix Leithy Logic

Added one line to fix the fact that the code would only work as
intended if either (i) writing out Ah_h, or (ii) in debug mode.
Also swapped .le. and .lt. for <= and <.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants