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

Proposal for regression testing on multiple platforms #95

Open
adcroft opened this issue May 26, 2016 · 8 comments
Open

Proposal for regression testing on multiple platforms #95

adcroft opened this issue May 26, 2016 · 8 comments

Comments

@adcroft
Copy link
Member

adcroft commented May 26, 2016

(If I get feedback on this ticket I will revise this original post but will indicate updates at the bottom).

We have a major imminent issue, which was anticipated, that involves the matter of regression testing on multiple platforms. The issue is that the regression answers are generated and updated on GFDL's HPC and a developer on a different platform, or with different compiler versions, can not reproduce those regression answers. It is clear that the current design is not sustainable as MOM6 expands to more and different platforms.

The original concept of version controlling code, inputs, and answers all together has proven very successful by many measures (e.g. we know when we broke something, who to blame and what to fix) even though it has added a burden to the development workflow. There are still gaps, such as the lack of versioning of very large input datasets. At GFDL, FRE is filling in some gaps, such as recording environments, but not all and it does not solve the imminent multi-platform regression issue. We are very certain that the general concept of version controlling everything is correct. However, we do recognize that the implementation needs some tweaking.

So we'd like input on a proposal, namely ideas 5 and 6 below, and discussion on relevant issues.

Considerations:

RA = Regression answers, meaning the content of ocean.stats and seaice.stats files.

  1. RA are primarily used for checking that code modifications and new features do not unintentionally alter solutions. These tests are currently passed down to the last bit.
  2. In addition to code and model inputs, RA are dependent on platform, compiler, optimization and compiler options, and compiler version. There are many many combinations of these variables.
  3. RA do change due to bug fixes or decisions about best practice (configuration choices).
  4. Version control of RA, inputs, and code, all together is essential.
  5. New feature code should be tested and provided with RA.
  6. Checking and generating RA needs to have a short turn around to be useful. We currently live with about 15 minutes.
  7. It is unlikely that GFDL developers or external developers will have direct access to each other's, nor all, platforms and thus will not be able to update RA for any but their own platforms. Even if GFDL had access, the range of platforms would make the exercise prohibitive.

Some ideas:

1. Adopt a more fuzzy regression approach

There is a notion that we could measure the expected error between platforms/compilers, etc. and then create tools to check that a model answer fall within bounds. This seems doable - we recently attempted to make such a measurement when changing platforms at GFDL and it was a lot of work because the tools don't exist. Further, many of the bugs we catch are due to the least significant bit changing, meaning the dynamical error growth is small compared to the computational error for the duration of our tests (which are deliberately short). Such bugs would fly under the radar.

2. Different branches of MOM6-examples for different platforms

Using a different branch of MOM6-examples to track answers on different platforms seems sensible. The challenge here is that if we change the inputs or code that leads to a change in RA, then they should all be in the same commit. On a different branch, we would need to merge in the inputs/code changes but no the changes to the RA. This idea fails because it requires breaking the git paradigm of all related changes belonging to one commit.

3. Separate MOM6-examples repositories for each platform

Here we envision a MOM6-examples for GFDL's HPC and another repository for an Ubuntu Linux platform, etc. This suffers from the same problem as branches above - merging a commit from one repo to another brings the changes to the wrong RA with it.

4. Move the RA into a submodule (their own repository)

Currently the RA files (ocean.stats) live in the example directory with the inputs. In this solution we would create a new repository for the RA alone with a directory tree mirroring MOM6-examples. We then add the RA repository as a submodule to MOM6-examples. When inputs/code change the RA, the new submodule commit id is included in the commit with the changed inputs. Oddly, this still suffers from the merge dilemma - merging from one platform branch to another would bring the commit id of the RA submodule and thus be wrong.

5. Create a RA repository and add MOM6-examples as a submodule

In this solution, the RA repository would have a directory tree mirroring MOM6-examples containing just the RA files and at the top it would have a submodule link to MOM6-examples. And here's the trick: there is no need for inter-branch merges. Imagine we change inputs in MOM6-examples. We update the RA files and add the submodule commit id on branch "platform_A". On branch "platform_B" nothing has changed - it still points to an older commit id and has the correct RA. Now a dev on platform B can update MOM6-examples, generate the new RA and make a commit. No merging needed. The commit id of the single submodule (MOM6-examples) is like a key (tag I guess) for which the RA either exist on a platform or they don't.

6. As for 5 but use an RA for each platform

The disadvantage of a single RA (in the NOAA-GFDL organization) is that branches are only writable by GFDL. Forks would solve this but why bother, since merges and pull requests are meaningless? On the other hand, forks are at least linked and you could find all the RA repositories.


Edits will be noted here. This OP will hopefully evolve into a plan.

  1. I inadvertently posted a very incomplete draft as Proposal for regression testing on multiple platforms #94. This post replaces that ticket.
@Hallberg-NOAA
Copy link
Member

Reading through this thoughtful discussion, I see the value of approaches #5 or #6, as well as the need to think about how to address these emerging issues as we consider quality control across multiple platforms at multiple institutions. However, I would like to see some more clarification of the pros and cons between #5 (one set of RAs) and #6 (multiple sets of RAs). It strikes me that #5 could be the pathway to #6, with the second set of RAs emerging only once they are needed.

Some input from folks from outside of GFDL would be valuable on this point.

RA = Regression answers, meaning the content of ocean.stats and seaice.stats files.

@nichannah
Copy link
Contributor

Thanks for the summary. I agree that 1-4 are less desirable - particularly the extra effort needed to maintain changes across branches/forks. I like the elegance of #5. Just to clarify, do you imagine the RA repository would have separate files for each platform+compiler combination?

There is possibly a #7 option which concerns finding a platform-independent way to generate answers. I've been experimenting with this using a software implementation of floating point arithmetic which avoids the FPU altogether (see Berkely SoftFloat http://www.jhauser.us/arithmetic/SoftFloat.html). So far it's looking promising, but I've only tried toy problems on a few platforms. This approach would also come with some downsides: 1) it's likely to be quite slow, I'm guessing 5-10x, 2) it would require a non-standard build including compiling the soft fp library itself.

Also, I was interested to hear that answer changes are often in the least significant bit. So it's a question of running tests just long enough to detect a computational error? I'm wondering whether we could try to reduce the runtime by using some (or all) long doubles (128 bit).

@Hallberg-NOAA
Copy link
Member

I think that the idea of getting machine-independent answers by avoiding the FPU altogether is interesting, but probably not the right solution for all our testing, in that we are commonly interested in ensuring that the optimized answers on any given machine are reproducible. I would think of this as being the equivalent of another (virtual) machine, but with the great virtue of being reproducible across hardware platforms. In other words, I see this idea as a potential complement to our existing approach to testing, not a replacement.

The answer changes between platforms do usually start out in the least significant bits in MOM6, as the result of a lot of very careful coding practices. To explain how we have achieved this, and to explain why we think that it is generally impossible to do even better, it is worthwhile to discuss 3 distinct sources of differences across machines and compilers.

  1. First, we have the order of arithmetic differences. We can and do control this by the use of parentheses (assuming that compilers respect parentheses). This is particularly important when we are taking sums of 3 or more quantities that can be of either sign, because in this case the answers are not guaranteed to be in the least sgnificant bits. For example 10^20 - 10^20 + 1 might return either 0 or 1 with 64 bit floating point arithmetic, depending on the order of the sums. In some cases, like in the denominators of the MOM6 tridiagonal solvers, there is a right order of arithmetic that gives the right answer, and we carefully enforce this with parentheses and by introducing temporary variables that ensure that only the most devious compiler optimization would get the wrong answer. In other cases, like the spatial averaging of 4 points, MOM6 uses the sets of parentheses that give an answer that is invariant to the rotation of the problem. In still other cases, like the sum of 3 or more tendencies in the momentum equations, there is no "right" order, but we still use parentheses so that we get the same order of sums, regardless of compiler settings. When taking products of multiple terms (but not exact powers of 2), the answers can differ in the least significant bit; while this can be controlled with parentheses, in MOM6 have not been systematic about forcing the products to be taken in the same order. We also use a special extended-fixed-point representation to get order-invariant sums across processors for things like global energy metrics and tests of conservation properties (see Hallberg & Adcroft, 2014, Parallel Computing).
  2. Different compilers use different math libraries for transcendental functions, like sin, cos, or tanh, and may chose to use either libraries or hardware-encoded algorithms (on some machines) for common functions sqrt, exp and even division. Although the differences in these functions should only show up in the least sigificant bits, we do not know of any practical way to control these differences. Hence, different compilers will always give different answers.
  3. Different machines use algorithms for floating point operations. For example, they may use more bits inside of the chip, even if the result that is stored to memory is in a standard 64-bit format. Because of this, we expect that different machines will always give different answers, even when the same compiler and compiler settings are used. However, it is our expectation that these differences will also arise in the least signficant bits.

However, in an ocean model, we are dealing with nonlinear (often chaotic) systems of equations with discrete logical branches, and we are often interested in tests that run long enough to ensure that even subtle differences in macroscopic metrics will be detected. We therefore do not expect differences that arise in the last significant bits will stay there, nor that solutions that differ even at leading order after a while are necessarily wrong. This is why our testing has emphasized bitwise identical reproduction of answers on whatever machines and compilers will actually be used, and why I think it must continue to do so.

@StephenGriffies
Copy link
Contributor

Bob,

I added an edited version of this very informative email to the MOM6 wiki.

Thanks,
Steve

On Tue, May 31, 2016 at 10:32 AM, Robert Hallberg [email protected]
wrote:

I think that the idea of getting machine-independent answers by avoiding
the FPU altogether is interesting, but probably not the right solution for
all our testing, in that we are commonly interested in ensuring that the
optimized answers on any given machine are reproducible. I would think of
this as being the equivalent of another (virtual) machine, but with the
great virtue of being reproducible across hardware platforms. In other
words, I see this idea as a potential complement to our existing approach
to testing, not a replacement.

The answer changes between platforms do usually start out in the least
significant bits in MOM6, as the result of a lot of very careful coding
practices. To explain how we have achieved this, and to explain why we
think that it is generally impossible to do even better, it is worthwhile
to discuss 3 distinct sources of differences across machines and compilers.

First, we have the order of arithmetic differences. We can and do
control this by the use of parentheses (assuming that compilers respect
parentheses). This is particularly important when we are taking sums of 3
or more quantities that can be of either sign, because in this case the
answers are not guaranteed to be in the least sgnificant bits. For example
10^20 - 10^20 + 1 might return either 0 or 1 with 64 bit floating point
arithmetic, depending on the order of the sums. In some cases, like in the
denominators of the MOM6 tridiagonal solvers, there is a right order of
arithmetic that gives the right answer, and we carefully enforce this with
parentheses and by introducing temporary variables that ensure that only
the most devious compiler optimization would get the wrong answer. In other
cases, like the spatial averaging of 4 points, MOM6 uses the sets of
parentheses that give an answer that is invariant to the rotation of the
problem. In still other cases, like the sum of 3 or more tendencies in the
momentum equations, there is no "right" order, but we still use parentheses
so that we get the same order of sums, regardless of compiler settings.
When taking products of multiple terms (but not exact powers of 2), the
answers can differ in the least significant bit; while this can be
controlled with parentheses, in MOM6 have not been systematic about forcing
the products to be taken in the same order. We also use a special
extended-fixed-point representation to get order-invariant sums across
processors for things like global energy metrics and tests of conservation
properties (see Hallberg & Adcroft, 2014, Parallel Computing).
2.

Different compilers use different math libraries for transcendental
functions, like sin, cos, or tanh, and may chose to use either libraries or
hardware-encoded algorithms (on some machines) for common functions sqrt,
exp and even division. Although the differences in these functions should
only show up in the least sigificant bits, we do not know of any practical
way to control these differences. Hence, different compilers will always
give different answers.
3.

Different machines use algorithms for floating point operations. For
example, they may use more bits inside of the chip, even if the result that
is stored to memory is in a standard 64-bit format. Because of this, we
expect that different machines will always give different answers, even
when the same compiler and compiler settings are used. However, it is our
expectation that these differences will also arise in the least signficant
bits.

However, in an ocean model, we are dealing with nonlinear (often chaotic)
systems of equations with discrete logical branches, and we are often
interested in tests that run long enough to ensure that even subtle
differences in macroscopic metrics will be detected. We therefore do not
expect differences that arise in the last significant bits will stay there,
nor that solutions that differ even at leading order after a while are
necessarily wrong. This is why our testing has emphasized bitwise identical
reproduction of answers on whatever machines and compilers will actually be
used, and why I think it must continue to do so.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#95 (comment),
or mute the thread
https://github.com/notifications/unsubscribe/ACBam3UF0SdbBTU-TA0oz840gMYMr5F4ks5qHEaJgaJpZM4InJxp
.

Dr. Stephen M. Griffies
NOAA Geophysical Fluid Dynamics Lab
201 Forrestal Road
Princeton, NJ 08542
USA

@adcroft
Copy link
Member Author

adcroft commented Jun 4, 2016

@nicjhan asked:

Just to clarify, do you imagine the RA repository would have separate files for each platform+compiler combination?

The git philosophy (and actuality) requires a commit to be complete. Only RA files that can be generated at once and together should and could make up a commit. Updating RA files from different platforms in the same repository in the same commit is very hard to imagine. I therefore think we would normally not have multiple platform RAs live together (on the same branch at least). If you have multiple platforms with access to the same file system and you can deal with the workflow of running everything across those platforms for each test then they could live together and this would even be encouraged since it gives greater coverage for the testing.

Multiple compilers (and versions) can live together because, as we demonstrate routinely, it easy to maintain multiple executables and RAs that live side-by-side. To incorporate multiple versions of compilers we need only modify the labels we currently use for the RA files. BTW, is it likely multiple versions of the same compiler will catch bugs?

Following that, I'm advocating that we adopt a repository per platform, or per group of platforms with access to the same file system, or per institution, on a case by case basis. The main benefit is it allows other users to adopt the regression testing practices we use at GFDL without needing access to each other's platforms.

@adcroft
Copy link
Member Author

adcroft commented Jun 4, 2016

@nijhan wrote:

There is possibly a # 7 option which concerns finding a platform-independent way to generate answers. I've been experimenting with this using a software implementation of floating point arithmetic which avoids the FPU altogether (see Berkely SoftFloat http://www.jhauser.us/arithmetic/SoftFloat.html). So far it's looking promising, but I've only tried toy problems on a few platforms. This approach would also come with some downsides: 1) it's likely to be quite slow, I'm guessing 5-10x, 2) it would require a non-standard build including compiling the soft fp library itself.

I like this idea. If this works and is deployable for others then I would certainly like to adopt this as a way to validate code installs and modifications. I agree with @Hallberg-NOAA's first comment; the inefficiency and disconnect from compilers/chipsets used for production means we will still need to regression test as we are currently doing. So I think we should pursue 6 and 7.

@adcroft
Copy link
Member Author

adcroft commented Jun 4, 2016

To illustrate ideas 5 and 6, I've re-created such a regression repository for the history of commits in MOM6-examples since we switched platforms to c3. I wish we'd thought of this earlier because it would have allowed us to have c1 and c3 RAs co-exist for the brief time the machines did both exist with access to the same file system.

FWIW, @nicjhan's idea # 7 could use a public/universal repository like this since everyone should be able to reproduce the RAs in it.

Things to note:

  • Since we switched to c3 (Apr 26), there have been:
    • 133 commits to MOM6, only 6 of which changed answers in one or more experiments.
    • 47 commits in MOM6-examples (most of which are MOM_parameter_doc updates).
    • 14 commits in the regression repo (i.e. changes to answers).
      • The commits that changed answers are therefore a lot easier to sift out.
      • 6 commits due to code changes (see above).
      • 6 commits where a configuration was added or altered.
      • 2 commits are due to an bad commit and reversion.
  • The README contains the command-line workflow which I hope is obvious.
  • This is a demonstration repo. I'll scrap it once we decide the direction we'll take.

adcroft added a commit that referenced this issue Aug 1, 2016
- The URL for MOM6 in .gitmodules was pointing to a user account.
- CPU_stats was empty and changes from run to run and thus not version
  controlled.
- ocean.stats was empty and is normally renamed to reflect platform when
  used for regression testing. Regressions are only supported on the GFDL
  platform pending #95.
@nichannah
Copy link
Contributor

Just a brief note. I'm making progress with the idea of running the model using (reproducible) software FP.

adcroft added a commit that referenced this issue Jul 5, 2019
…into dev/master

- This is a merge from NCAR onto dev/master for MOM6.
- Updates parameter_doc and available_diag files.
- No answer changes.

- NOAA-GFDL/MOM6@7698afb Merge branch 'gustavo-marques-dev-master-candidate-2019-06-11' into dev/master
- NOAA-GFDL/MOM6@5c42192 Removes trailing space
- NOAA-GFDL/MOM6@8f96916 Passes optional arg. (BT=CS%barotropic_CSp) in calls to horizontal_viscosity
- NOAA-GFDL/MOM6@47886e3 Changes Barotropic to BT in horizontal_viscosity
- NOAA-GFDL/MOM6@31dfefd Removes Barotropic and thickness_diffuse from MOM_dynamics_unsplit*
- NOAA-GFDL/MOM6@0d1fbff Issue FATAL error if SPLIT=False and USE_GME=True
- NOAA-GFDL/MOM6@1a71a55 Remove thickness_diffuse_CS from horizontal_viscosity
- NOAA-GFDL/MOM6@2a9d421 Set default AH_VEL_SCALE back to zero
- NOAA-GFDL/MOM6@98373e8 Fix hint syntax in MOM_obsolete_param
- NOAA-GFDL/MOM6@89168bf move OMP calls below GME and above the K-loop
- NOAA-GFDL/MOM6@afb07fb Add MEKE_GEOMETRIC_EPSILON
- NOAA-GFDL/MOM6@062e3b0 Obsolete parameter MEKE_VISCOSITY_COEFF
- NOAA-GFDL/MOM6@2ada29a Adds MEKE_VISCOSITY_COEFF_AU and MEKE_VISCOSITY_COEFF_KU into the MEKE documentation
- NOAA-GFDL/MOM6@31dda12 Merge branch 'dev/master' into dev-master-candidate-2019-06-11
- NOAA-GFDL/MOM6@91d0e26 Merge pull request #103 from gustavo-marques/gme_31May2019
- NOAA-GFDL/MOM6@22b6695 Remove trailing space
- NOAA-GFDL/MOM6@a995acf Reverts biharmonic constants to the origial definition
- NOAA-GFDL/MOM6@2d2f83f Changes the way of counting the work
- NOAA-GFDL/MOM6@25ea4dc Changes in MEKE
- NOAA-GFDL/MOM6@f74be3f Deletes code related to GME_Varmix
- NOAA-GFDL/MOM6@f52375b Changes logic of an if statement in calc_slope_functions to avoid change in answers
- NOAA-GFDL/MOM6@b3c0b69 Fixes unregistered diagnostic id
- NOAA-GFDL/MOM6@1388ce7 Removes trailing space
- NOAA-GFDL/MOM6@4dd50c1 Fixes additional doxygen syntax
- NOAA-GFDL/MOM6@3d997ee Fixes doxygen syntax
- NOAA-GFDL/MOM6@35eccc0 Ensures that MEKE%Kh_diff is only used when USE_KH_IN_MEKE = True
- NOAA-GFDL/MOM6@3594d53 Merge branch 'merge_GME_17May2019' into geometric_putao
- NOAA-GFDL/MOM6@59944eb Added GEOMETRIC as an option for MEKE. Also added biharmonic MEKE viscosity and the option to use a non-MEKE thickness diffusivity to diffuse MEKE. Split MEKE viscosity options into parts concerning Ku and Au.
- NOAA-GFDL/MOM6@03386c0 Merge branch 'dev/ncar' into merge_GME
- NOAA-GFDL/MOM6@e5a0b82 Merge branch 'GME_10may2019putao' into geometric_putao
- NOAA-GFDL/MOM6@e0a8b9b Merge pull request #102 from NCAR/ocn_lag
- NOAA-GFDL/MOM6@b2ff365 fix ocean lag logic for restart runs
- NOAA-GFDL/MOM6@8797615 Merge pull request #101 from NCAR/ocn_lag
- NOAA-GFDL/MOM6@0ae751e apply ocean lag to cesm runs only
- NOAA-GFDL/MOM6@eb301fe skip first tstep and double second tstep
- NOAA-GFDL/MOM6@b668abf Merge pull request #100 from gustavo-marques/set_fw_bug_to_false
- NOAA-GFDL/MOM6@d449d37 Set default of USE_NET_FW_ADJUSTMENT_SIGN_BUG to false in NUOPC cap
- NOAA-GFDL/MOM6@eda43c4 Merge branch 'guillermo_putao' into gme_06may2019
- NOAA-GFDL/MOM6@4c15159 Added a "next-to_boundary" mask that should help with fixing abnormally large values of the velocity gradient tensor magnitude next to land.
- NOAA-GFDL/MOM6@434ffe7 Working configuration of MEKE/GME. Has biharmonic MEKE viscosity and a GME sink term.
- NOAA-GFDL/MOM6@b503858 Merge pull request #99 from gustavo-marques/add_missing_fluxes_nuopc
- NOAA-GFDL/MOM6@ef0abe6 Merge branch 'dev/ncar' into gme_03may2019
- NOAA-GFDL/MOM6@434ff08 Willy was silly.
- NOAA-GFDL/MOM6@27bc6b3 Merge pull request #98 from NCAR/fix_nuopc_calendar
- NOAA-GFDL/MOM6@4b6ef52 Revert "Added biharmonic option for MEKE viscosity."
- NOAA-GFDL/MOM6@7671d31 get calendar from CESM
- NOAA-GFDL/MOM6@69c21ea Add missing US entries and fix typos introduced during merge
- NOAA-GFDL/MOM6@4db5f4d Merge branch 'add_missing_fluxes_nuopc' into gme_03may2019
- NOAA-GFDL/MOM6@4d02387 Add seaice_melt and seaice_melt_heat
- NOAA-GFDL/MOM6@a6cd3fe Commented out thickness diffusivity calls for GME, since it is not presently being used.
- NOAA-GFDL/MOM6@80c65c7 Added a GME sink term to the MEKE budget. Cleaned up MOM_hor_visc.F90.
- NOAA-GFDL/MOM6@6b32174 Added biharmonic option for MEKE viscosity.
- NOAA-GFDL/MOM6@73e89ec Cleaned up MOM_hor_visc.F90 a bit, especially parts having to do with calculating FrictWork.
- NOAA-GFDL/MOM6@3c91971 Added option to calculate MKE-to-MEKE energy conversion by GME.
- NOAA-GFDL/MOM6@f6d1c65 Fixed if statement in MOM_MEKE.F90.  Added option to use alternative form of GM PE-to_MEKE energy conversion in MOM_thickness_diffuse.
- NOAA-GFDL/MOM6@c24bfb3 Added Jansen et al. (2015) version of MEKE dissipation. Added an alternative way of calculating PE-to_MEKE energy conversion.
- NOAA-GFDL/MOM6@3df6ff3 Merge pull request #97 from alperaltuntas/fix_nuopc_use_only
- NOAA-GFDL/MOM6@0fcc576 use ESMF operators
- NOAA-GFDL/MOM6@36ba339 Merge pull request #96 from gustavo-marques/add_missing_US_arguments_nuopc_cap
- NOAA-GFDL/MOM6@ce5571f Add CS%US argument lost during merge conflict
- NOAA-GFDL/MOM6@4727f20 Merge branch 'dev-master-candidate-2018-04-22' into add_missing_US_arguments_nuopc_cap
- NOAA-GFDL/MOM6@42582a1 Merge pull request #95 from alperaltuntas/fix_debug_mode
- NOAA-GFDL/MOM6@03a5586 Merge branch 'dev/ncar' into fix_debug_mode
- NOAA-GFDL/MOM6@d8b7825 fix uninitialized oneOrTwo
- NOAA-GFDL/MOM6@379e9ee make uppercase DEBUG lowercase
- NOAA-GFDL/MOM6@acb4d3f Merge pull request #94 from gustavo-marques/merge-dev-master-candidate-2018-04-22
- NOAA-GFDL/MOM6@d892664 Merge branch 'dev-master-candidate-2018-04-22' into merge-dev-master-candidate-2018-04-22
- NOAA-GFDL/MOM6@5868144 Merge pull request #93 from gustavo-marques/add_nuopc_cap
- NOAA-GFDL/MOM6@172ae02 Fixed problems with FrictWorkMax and FrictWorkDiss in MOM_hor_visc.F. More specifically, I moved the calculation of dudx and dvdy outside of the Leith loop so now it is being calculated with sh_xx.
- NOAA-GFDL/MOM6@8df6efd Added a new flag to MOM_lateral_mixing_coeffs called "USE_VISBECK", which calculates the GM coefficient using the Visbeck et al. (1997) formulation. Previously this was being done whenever VarMix was enabled, but I wanted to separate VarMix from this diffusivity call.
- NOAA-GFDL/MOM6@e5238f5 Merge branch 'dev/ncar' into add_nuopc_cap
- NOAA-GFDL/MOM6@6542122 Added new variable FrictWork_diss to account for the energy dissipated by shear production (excluding the energy diffusion term which can be positive).
- NOAA-GFDL/MOM6@2260e70 Fixed some coding mistakes from the last commit.
- NOAA-GFDL/MOM6@f5da24d Allocated FrictWorkMax array (forgot last time).
- NOAA-GFDL/MOM6@59aad4f Added a loop to ensure MEKE is never less than 0.  Added new variable called FrictWorkMax that calculates the maximum frictional work that is allowed by theory.
- NOAA-GFDL/MOM6@807072b Refactored MOM_hor_visc. Moved GME out of loops where downgradient viscosity is calculated. Moved calculation of FrictWork ahead of GME so I can separate the work done by downgradient stuff from that of GME.
- NOAA-GFDL/MOM6@bd98d83 Increased GME limiter and number of times to pass through smoothing function.
- NOAA-GFDL/MOM6@fda0334 Fixed QG Leith halo problem on k=nz level. Also added a tapering function to GME that turns it off in shallow water.
- NOAA-GFDL/MOM6@24790c2 Added some pass_vector and pass_var calls
- NOAA-GFDL/MOM6@a605c59 Added some pass_vector calls
- NOAA-GFDL/MOM6@a271bb9 Changed QG Leith limiter to 2D vort. grad.
- NOAA-GFDL/MOM6@823d014 Merge branch 'dev/ncar' into GME_21Feb2019
- NOAA-GFDL/MOM6@bed3fbc Change limiter in the GME_coeff to 1.0e4
- NOAA-GFDL/MOM6@25ff7c8 Merge pull request #92 from gustavo-marques/fix_rotation
- NOAA-GFDL/MOM6@8f2080a Merge pull request #91 from gustavo-marques/latent_heat_frozen_fluxes
- NOAA-GFDL/MOM6@a160252 Change limiter in the GME_coeff to 1.0e5
- NOAA-GFDL/MOM6@dddf151 Merge branch 'latent_heat_frozen_fluxes' into fix_rotation
- NOAA-GFDL/MOM6@e502a97 Fix another line length
- NOAA-GFDL/MOM6@12d8856 Merge branch 'latent_heat_frozen_fluxes' into fix_rotation
- NOAA-GFDL/MOM6@adfd67e Fix line length
- NOAA-GFDL/MOM6@2467749 Merge branch 'dev/ncar' into latent_heat_frozen_fluxes
- NOAA-GFDL/MOM6@a5fe8c0 Fix rotations in import and export subroutines
- NOAA-GFDL/MOM6@72945e4 Comment lines with index_bounds
- NOAA-GFDL/MOM6@1241da8 Add new way of calculating latent heat
- NOAA-GFDL/MOM6@b97a787 Fixed problem with updating hq -- hq is now a 2D array
- NOAA-GFDL/MOM6@5360863 Changed hq to a 2D array
- NOAA-GFDL/MOM6@4b35452 Modified initialization of GME variables
- NOAA-GFDL/MOM6@38ac453 Fixed several issues for GME
- NOAA-GFDL/MOM6@03b01c4 Merge pull request #89 from gustavo-marques/sync_dev_master_19Dec18
- NOAA-GFDL/MOM6@8228b64 Merge pull request #90 from alperaltuntas/fix_oda
- NOAA-GFDL/MOM6@cc7f725 apply oda tracer increments only if da is active
- NOAA-GFDL/MOM6@de3a52c Deleted KH_t_GME and allocate arrays via safe_alloc_ptr
- NOAA-GFDL/MOM6@581b30d Move inv_PI3 outside of k loop
- NOAA-GFDL/MOM6@462dfd8 Change condition for applying Ah_Limit + axes for GME diag.
- NOAA-GFDL/MOM6@bef613b Add thickness_diffuse_CSp and Barotropic_CSp as arguments
- NOAA-GFDL/MOM6@e8a7386 Move thickness_diffuse_init before initialize_dyn_split_RK2
- NOAA-GFDL/MOM6@d3aaa9d Fix calls to find_eta and calc_Visbeck_coeffs
- NOAA-GFDL/MOM6@019ee95 Merge branch 'dev/ncar' into ncar_GME_willy_merged
- NOAA-GFDL/MOM6@d5f5d32 Adds GME and smoothing function
- NOAA-GFDL/MOM6@a38fc07 Add flags for GME and define necessary arrays
- NOAA-GFDL/MOM6@ec68e41 Adds infrastructure to enable GME to access private arrays
- NOAA-GFDL/MOM6@60d493a Add option to use QG Leith viscosity as the GM coefficient
- NOAA-GFDL/MOM6@81a5771 Compute QG Leith GM coefficient and add some diagnostics
- NOAA-GFDL/MOM6@c42b6a4 Add grad_vort_mag_h and grad_vort_mag_q
- NOAA-GFDL/MOM6@d96a3fe Defined KH arrays in VarMix to be passed to thickness_diffuse.
- NOAA-GFDL/MOM6@f913004 Preparing lateral_coeffs and thickness_diffuse for QG Leith calculations.
- NOAA-GFDL/MOM6@52667e9 Changed use_QG_Leith to use_QG_Leith_visc. Removed commented lines from calc_QG_Leith_viscosity.
- NOAA-GFDL/MOM6@e0baaea Initialized new arrays for Leith, deleted deprecated ones
- NOAA-GFDL/MOM6@3b43efe Refactored the entire Leith section.
- NOAA-GFDL/MOM6@f4256fb Adding a limiter via planetary number
- NOAA-GFDL/MOM6@5c5533b Rename variables to make names consistent; fix dimens. Biharm Smag
- NOAA-GFDL/MOM6@b9d69b7 Fix a bug in an if statement
- NOAA-GFDL/MOM6@d069e51 Changed constraint on Leith viscosity.
- NOAA-GFDL/MOM6@92e2875 Bounds vort_xy_* in Leith.
- NOAA-GFDL/MOM6@d02fd47 Adds option to diagnose div_xx_h and vort_xy_q
- NOAA-GFDL/MOM6@da862b3 Change calc_Leith_viscosity to calc_QG_Leith_viscosity
- NOAA-GFDL/MOM6@84542af QG Leith code refactoring
- NOAA-GFDL/MOM6@cda9edd Deletes unneeded code
- NOAA-GFDL/MOM6@7746539 Deletes unecessary code and adds Leith_Kh_*
- NOAA-GFDL/MOM6@2becf74 Merge branch 'qg-leith' into ncar_qg_leith
- NOAA-GFDL/MOM6@69f2c75 Added stretching term for QG Leith viscosity
- NOAA-GFDL/MOM6@f08592f Added independent flag for beta-term in Leith
- NOAA-GFDL/MOM6@b39edff Cleaned up left over arrays from moving Leith out of MOM_hor_visc.F90
- NOAA-GFDL/MOM6@c546d3d Replaced calc_vert_vort_mag() with calc_Leith_viscosity()
- NOAA-GFDL/MOM6@c59f87e Read Leith parameters in MOM_lateral_coeffs.F90
- NOAA-GFDL/MOM6@7dc2510 Added beta to Leith vorticity magnitude
- NOAA-GFDL/MOM6@273745c Moved Leith vorticity magnitude calc into MOM_lateral_mixing_coeffs.F90
- NOAA-GFDL/MOM6@e5d4bdf Consolidated Leith related calculations
- NOAA-GFDL/MOM6@fd4faf5 Converted local scalar Vort_mag into local 2d array
adcroft added a commit that referenced this issue Jul 5, 2019
- NOAA-GFDL/MOM6@27485ef Merge branch 'dev/master' into dev/gfdl
- NOAA-GFDL/MOM6@7698afb Merge branch 'gustavo-marques-dev-master-candidate-2019-06-11' into dev/master
- NOAA-GFDL/MOM6@5c42192 Removes trailing space
- NOAA-GFDL/MOM6@8f96916 Passes optional arg. (BT=CS%barotropic_CSp) in calls to horizontal_viscosity
- NOAA-GFDL/MOM6@47886e3 Changes Barotropic to BT in horizontal_viscosity
- NOAA-GFDL/MOM6@31dfefd Removes Barotropic and thickness_diffuse from MOM_dynamics_unsplit*
- NOAA-GFDL/MOM6@0d1fbff Issue FATAL error if SPLIT=False and USE_GME=True
- NOAA-GFDL/MOM6@1a71a55 Remove thickness_diffuse_CS from horizontal_viscosity
- NOAA-GFDL/MOM6@2a9d421 Set default AH_VEL_SCALE back to zero
- NOAA-GFDL/MOM6@98373e8 Fix hint syntax in MOM_obsolete_param
- NOAA-GFDL/MOM6@89168bf move OMP calls below GME and above the K-loop
- NOAA-GFDL/MOM6@afb07fb Add MEKE_GEOMETRIC_EPSILON
- NOAA-GFDL/MOM6@062e3b0 Obsolete parameter MEKE_VISCOSITY_COEFF
- NOAA-GFDL/MOM6@2ada29a Adds MEKE_VISCOSITY_COEFF_AU and MEKE_VISCOSITY_COEFF_KU into the MEKE documentation
- NOAA-GFDL/MOM6@31dda12 Merge branch 'dev/master' into dev-master-candidate-2019-06-11
- NOAA-GFDL/MOM6@91d0e26 Merge pull request #103 from gustavo-marques/gme_31May2019
- NOAA-GFDL/MOM6@22b6695 Remove trailing space
- NOAA-GFDL/MOM6@a995acf Reverts biharmonic constants to the origial definition
- NOAA-GFDL/MOM6@2d2f83f Changes the way of counting the work
- NOAA-GFDL/MOM6@25ea4dc Changes in MEKE
- NOAA-GFDL/MOM6@f74be3f Deletes code related to GME_Varmix
- NOAA-GFDL/MOM6@f52375b Changes logic of an if statement in calc_slope_functions to avoid change in answers
- NOAA-GFDL/MOM6@b3c0b69 Fixes unregistered diagnostic id
- NOAA-GFDL/MOM6@1388ce7 Removes trailing space
- NOAA-GFDL/MOM6@4dd50c1 Fixes additional doxygen syntax
- NOAA-GFDL/MOM6@3d997ee Fixes doxygen syntax
- NOAA-GFDL/MOM6@35eccc0 Ensures that MEKE%Kh_diff is only used when USE_KH_IN_MEKE = True
- NOAA-GFDL/MOM6@3594d53 Merge branch 'merge_GME_17May2019' into geometric_putao
- NOAA-GFDL/MOM6@59944eb Added GEOMETRIC as an option for MEKE. Also added biharmonic MEKE viscosity and the option to use a non-MEKE thickness diffusivity to diffuse MEKE. Split MEKE viscosity options into parts concerning Ku and Au.
- NOAA-GFDL/MOM6@03386c0 Merge branch 'dev/ncar' into merge_GME
- NOAA-GFDL/MOM6@e5a0b82 Merge branch 'GME_10may2019putao' into geometric_putao
- NOAA-GFDL/MOM6@e0a8b9b Merge pull request #102 from NCAR/ocn_lag
- NOAA-GFDL/MOM6@b2ff365 fix ocean lag logic for restart runs
- NOAA-GFDL/MOM6@8797615 Merge pull request #101 from NCAR/ocn_lag
- NOAA-GFDL/MOM6@0ae751e apply ocean lag to cesm runs only
- NOAA-GFDL/MOM6@eb301fe skip first tstep and double second tstep
- NOAA-GFDL/MOM6@b668abf Merge pull request #100 from gustavo-marques/set_fw_bug_to_false
- NOAA-GFDL/MOM6@d449d37 Set default of USE_NET_FW_ADJUSTMENT_SIGN_BUG to false in NUOPC cap
- NOAA-GFDL/MOM6@eda43c4 Merge branch 'guillermo_putao' into gme_06may2019
- NOAA-GFDL/MOM6@4c15159 Added a "next-to_boundary" mask that should help with fixing abnormally large values of the velocity gradient tensor magnitude next to land.
- NOAA-GFDL/MOM6@434ffe7 Working configuration of MEKE/GME. Has biharmonic MEKE viscosity and a GME sink term.
- NOAA-GFDL/MOM6@b503858 Merge pull request #99 from gustavo-marques/add_missing_fluxes_nuopc
- NOAA-GFDL/MOM6@ef0abe6 Merge branch 'dev/ncar' into gme_03may2019
- NOAA-GFDL/MOM6@434ff08 Willy was silly.
- NOAA-GFDL/MOM6@27bc6b3 Merge pull request #98 from NCAR/fix_nuopc_calendar
- NOAA-GFDL/MOM6@4b6ef52 Revert "Added biharmonic option for MEKE viscosity."
- NOAA-GFDL/MOM6@7671d31 get calendar from CESM
- NOAA-GFDL/MOM6@69c21ea Add missing US entries and fix typos introduced during merge
- NOAA-GFDL/MOM6@4db5f4d Merge branch 'add_missing_fluxes_nuopc' into gme_03may2019
- NOAA-GFDL/MOM6@4d02387 Add seaice_melt and seaice_melt_heat
- NOAA-GFDL/MOM6@a6cd3fe Commented out thickness diffusivity calls for GME, since it is not presently being used.
- NOAA-GFDL/MOM6@80c65c7 Added a GME sink term to the MEKE budget. Cleaned up MOM_hor_visc.F90.
- NOAA-GFDL/MOM6@6b32174 Added biharmonic option for MEKE viscosity.
- NOAA-GFDL/MOM6@73e89ec Cleaned up MOM_hor_visc.F90 a bit, especially parts having to do with calculating FrictWork.
- NOAA-GFDL/MOM6@3c91971 Added option to calculate MKE-to-MEKE energy conversion by GME.
- NOAA-GFDL/MOM6@f6d1c65 Fixed if statement in MOM_MEKE.F90.  Added option to use alternative form of GM PE-to_MEKE energy conversion in MOM_thickness_diffuse.
- NOAA-GFDL/MOM6@c24bfb3 Added Jansen et al. (2015) version of MEKE dissipation. Added an alternative way of calculating PE-to_MEKE energy conversion.
- NOAA-GFDL/MOM6@3df6ff3 Merge pull request #97 from alperaltuntas/fix_nuopc_use_only
- NOAA-GFDL/MOM6@0fcc576 use ESMF operators
- NOAA-GFDL/MOM6@36ba339 Merge pull request #96 from gustavo-marques/add_missing_US_arguments_nuopc_cap
- NOAA-GFDL/MOM6@ce5571f Add CS%US argument lost during merge conflict
- NOAA-GFDL/MOM6@4727f20 Merge branch 'dev-master-candidate-2018-04-22' into add_missing_US_arguments_nuopc_cap
- NOAA-GFDL/MOM6@42582a1 Merge pull request #95 from alperaltuntas/fix_debug_mode
- NOAA-GFDL/MOM6@03a5586 Merge branch 'dev/ncar' into fix_debug_mode
- NOAA-GFDL/MOM6@d8b7825 fix uninitialized oneOrTwo
- NOAA-GFDL/MOM6@379e9ee make uppercase DEBUG lowercase
- NOAA-GFDL/MOM6@acb4d3f Merge pull request #94 from gustavo-marques/merge-dev-master-candidate-2018-04-22
- NOAA-GFDL/MOM6@d892664 Merge branch 'dev-master-candidate-2018-04-22' into merge-dev-master-candidate-2018-04-22
- NOAA-GFDL/MOM6@5868144 Merge pull request #93 from gustavo-marques/add_nuopc_cap
- NOAA-GFDL/MOM6@172ae02 Fixed problems with FrictWorkMax and FrictWorkDiss in MOM_hor_visc.F. More specifically, I moved the calculation of dudx and dvdy outside of the Leith loop so now it is being calculated with sh_xx.
- NOAA-GFDL/MOM6@8df6efd Added a new flag to MOM_lateral_mixing_coeffs called "USE_VISBECK", which calculates the GM coefficient using the Visbeck et al. (1997) formulation. Previously this was being done whenever VarMix was enabled, but I wanted to separate VarMix from this diffusivity call.
- NOAA-GFDL/MOM6@e5238f5 Merge branch 'dev/ncar' into add_nuopc_cap
- NOAA-GFDL/MOM6@6542122 Added new variable FrictWork_diss to account for the energy dissipated by shear production (excluding the energy diffusion term which can be positive).
- NOAA-GFDL/MOM6@2260e70 Fixed some coding mistakes from the last commit.
- NOAA-GFDL/MOM6@f5da24d Allocated FrictWorkMax array (forgot last time).
- NOAA-GFDL/MOM6@59aad4f Added a loop to ensure MEKE is never less than 0.  Added new variable called FrictWorkMax that calculates the maximum frictional work that is allowed by theory.
- NOAA-GFDL/MOM6@807072b Refactored MOM_hor_visc. Moved GME out of loops where downgradient viscosity is calculated. Moved calculation of FrictWork ahead of GME so I can separate the work done by downgradient stuff from that of GME.
- NOAA-GFDL/MOM6@bd98d83 Increased GME limiter and number of times to pass through smoothing function.
- NOAA-GFDL/MOM6@fda0334 Fixed QG Leith halo problem on k=nz level. Also added a tapering function to GME that turns it off in shallow water.
- NOAA-GFDL/MOM6@24790c2 Added some pass_vector and pass_var calls
- NOAA-GFDL/MOM6@a605c59 Added some pass_vector calls
- NOAA-GFDL/MOM6@a271bb9 Changed QG Leith limiter to 2D vort. grad.
- NOAA-GFDL/MOM6@823d014 Merge branch 'dev/ncar' into GME_21Feb2019
- NOAA-GFDL/MOM6@bed3fbc Change limiter in the GME_coeff to 1.0e4
- NOAA-GFDL/MOM6@25ff7c8 Merge pull request #92 from gustavo-marques/fix_rotation
- NOAA-GFDL/MOM6@8f2080a Merge pull request #91 from gustavo-marques/latent_heat_frozen_fluxes
- NOAA-GFDL/MOM6@a160252 Change limiter in the GME_coeff to 1.0e5
- NOAA-GFDL/MOM6@dddf151 Merge branch 'latent_heat_frozen_fluxes' into fix_rotation
- NOAA-GFDL/MOM6@e502a97 Fix another line length
- NOAA-GFDL/MOM6@12d8856 Merge branch 'latent_heat_frozen_fluxes' into fix_rotation
- NOAA-GFDL/MOM6@adfd67e Fix line length
- NOAA-GFDL/MOM6@2467749 Merge branch 'dev/ncar' into latent_heat_frozen_fluxes
- NOAA-GFDL/MOM6@a5fe8c0 Fix rotations in import and export subroutines
- NOAA-GFDL/MOM6@72945e4 Comment lines with index_bounds
- NOAA-GFDL/MOM6@1241da8 Add new way of calculating latent heat
- NOAA-GFDL/MOM6@b97a787 Fixed problem with updating hq -- hq is now a 2D array
- NOAA-GFDL/MOM6@5360863 Changed hq to a 2D array
- NOAA-GFDL/MOM6@4b35452 Modified initialization of GME variables
- NOAA-GFDL/MOM6@38ac453 Fixed several issues for GME
- NOAA-GFDL/MOM6@03b01c4 Merge pull request #89 from gustavo-marques/sync_dev_master_19Dec18
- NOAA-GFDL/MOM6@8228b64 Merge pull request #90 from alperaltuntas/fix_oda
- NOAA-GFDL/MOM6@cc7f725 apply oda tracer increments only if da is active
- NOAA-GFDL/MOM6@de3a52c Deleted KH_t_GME and allocate arrays via safe_alloc_ptr
- NOAA-GFDL/MOM6@581b30d Move inv_PI3 outside of k loop
- NOAA-GFDL/MOM6@462dfd8 Change condition for applying Ah_Limit + axes for GME diag.
- NOAA-GFDL/MOM6@bef613b Add thickness_diffuse_CSp and Barotropic_CSp as arguments
- NOAA-GFDL/MOM6@e8a7386 Move thickness_diffuse_init before initialize_dyn_split_RK2
- NOAA-GFDL/MOM6@d3aaa9d Fix calls to find_eta and calc_Visbeck_coeffs
- NOAA-GFDL/MOM6@019ee95 Merge branch 'dev/ncar' into ncar_GME_willy_merged
- NOAA-GFDL/MOM6@d5f5d32 Adds GME and smoothing function
- NOAA-GFDL/MOM6@a38fc07 Add flags for GME and define necessary arrays
- NOAA-GFDL/MOM6@ec68e41 Adds infrastructure to enable GME to access private arrays
- NOAA-GFDL/MOM6@60d493a Add option to use QG Leith viscosity as the GM coefficient
- NOAA-GFDL/MOM6@81a5771 Compute QG Leith GM coefficient and add some diagnostics
- NOAA-GFDL/MOM6@c42b6a4 Add grad_vort_mag_h and grad_vort_mag_q
- NOAA-GFDL/MOM6@d96a3fe Defined KH arrays in VarMix to be passed to thickness_diffuse.
- NOAA-GFDL/MOM6@f913004 Preparing lateral_coeffs and thickness_diffuse for QG Leith calculations.
- NOAA-GFDL/MOM6@52667e9 Changed use_QG_Leith to use_QG_Leith_visc. Removed commented lines from calc_QG_Leith_viscosity.
- NOAA-GFDL/MOM6@e0baaea Initialized new arrays for Leith, deleted deprecated ones
- NOAA-GFDL/MOM6@3b43efe Refactored the entire Leith section.
- NOAA-GFDL/MOM6@f4256fb Adding a limiter via planetary number
- NOAA-GFDL/MOM6@5c5533b Rename variables to make names consistent; fix dimens. Biharm Smag
- NOAA-GFDL/MOM6@b9d69b7 Fix a bug in an if statement
- NOAA-GFDL/MOM6@d069e51 Changed constraint on Leith viscosity.
- NOAA-GFDL/MOM6@92e2875 Bounds vort_xy_* in Leith.
- NOAA-GFDL/MOM6@d02fd47 Adds option to diagnose div_xx_h and vort_xy_q
- NOAA-GFDL/MOM6@da862b3 Change calc_Leith_viscosity to calc_QG_Leith_viscosity
- NOAA-GFDL/MOM6@84542af QG Leith code refactoring
- NOAA-GFDL/MOM6@cda9edd Deletes unneeded code
- NOAA-GFDL/MOM6@7746539 Deletes unecessary code and adds Leith_Kh_*
- NOAA-GFDL/MOM6@2becf74 Merge branch 'qg-leith' into ncar_qg_leith
- NOAA-GFDL/MOM6@69f2c75 Added stretching term for QG Leith viscosity
- NOAA-GFDL/MOM6@f08592f Added independent flag for beta-term in Leith
- NOAA-GFDL/MOM6@b39edff Cleaned up left over arrays from moving Leith out of MOM_hor_visc.F90
- NOAA-GFDL/MOM6@c546d3d Replaced calc_vert_vort_mag() with calc_Leith_viscosity()
- NOAA-GFDL/MOM6@c59f87e Read Leith parameters in MOM_lateral_coeffs.F90
- NOAA-GFDL/MOM6@7dc2510 Added beta to Leith vorticity magnitude
- NOAA-GFDL/MOM6@273745c Moved Leith vorticity magnitude calc into MOM_lateral_mixing_coeffs.F90
- NOAA-GFDL/MOM6@e5d4bdf Consolidated Leith related calculations
- NOAA-GFDL/MOM6@fd4faf5 Converted local scalar Vort_mag into local 2d array
marshallward added a commit that referenced this issue Apr 2, 2022
- NOAA-GFDL/MOM6@356671c20 +Refactor writing the vertical_coordinate file
- NOAA-GFDL/MOM6@08582eead add residual loss term for internal tides (#95)
- NOAA-GFDL/MOM6@4c5e98e1b Error handler support
- NOAA-GFDL/MOM6@2ac64b39c Set INPUT_STR_LENGTH to 1024
- NOAA-GFDL/MOM6@4e94c5d6a Reduce the populate_param_data memory footprint
- NOAA-GFDL/MOM6@3b5d2641a Support arbitrarily long parameter spec lines
- NOAA-GFDL/MOM6@97331e705 +Better multi-line parameter specification handling
- NOAA-GFDL/MOM6@8bf9abbad reworked algebra corner spread, rotation parenthesis (#90)
- NOAA-GFDL/MOM6@ce22d7aea add missing shared variable
- NOAA-GFDL/MOM6@115d71477 Ice dynamics (#80)
- NOAA-GFDL/MOM6@7c3f31bd4 +(*)Write unscaled MOM6 restart files
- NOAA-GFDL/MOM6@11d03b13b +Add unit conversion capability for restarts
- NOAA-GFDL/MOM6@d5601696e +Stop logging NEW_SPONGES
marshallward added a commit that referenced this issue Jul 7, 2022
- NOAA-GFDL/MOM6@3b80e443d Follow MOM6 code style guide
- NOAA-GFDL/MOM6@0c1e89a2c Add missing units
- NOAA-GFDL/MOM6@0e8acd90b +(*)Fix a scaling bug in MOM_horizontal_regridding
- NOAA-GFDL/MOM6@005c46066 Impose standard indentation in nuopc_cap code
- NOAA-GFDL/MOM6@3b05cdfdb Impose standard indentation in most driver code
- NOAA-GFDL/MOM6@9b1d382ae Style compliance in external/ODA_hooks code
- NOAA-GFDL/MOM6@1d8fb5091 +Style compliance in external/drifters code
- NOAA-GFDL/MOM6@84d78a661 +Revised stochastics code for style compliance
- NOAA-GFDL/MOM6@8f97b3d2f Corrections to cell-averaged density computation (#213)
- NOAA-GFDL/MOM6@41a278b81 Candidate branch main->dev/gfdl
- NOAA-GFDL/MOM6@e73c231fb +Set thickness_units for use by deta_dt diagnostic
- NOAA-GFDL/MOM6@2cd228fbe Adds conditional for setting fluxes%heat_content_*
- NOAA-GFDL/MOM6@fc3ab450b Avoid rotating arrays that are not associated
- NOAA-GFDL/MOM6@f81414708 Add missing logical to control allocation of fluxes
- NOAA-GFDL/MOM6@b9b67a838 Changes needed for when enthalpy is via coupler
- NOAA-GFDL/MOM6@fc05abe21 Modifications needed for when enthalpy is via CPL
- NOAA-GFDL/MOM6@7924fbaee Modify log/description of ENTHALPY_FROM_COUPLER
- NOAA-GFDL/MOM6@b7665f481 Heat conservation when enthalpy is via coupler
- NOAA-GFDL/MOM6@72daf7b0c Add option to receive enthalpy fluxes via coupler
- NOAA-GFDL/MOM6@861a8f14d Use ODA_2018_ANSWERS to specify ODA remapping
- NOAA-GFDL/MOM6@48ae48ae7 Remove unused variables
- NOAA-GFDL/MOM6@684878ee4 Add a deta_dt diagnostic to the split BT/BC mode (#99)
- NOAA-GFDL/MOM6@f6fc6ce17 FMS2: get_field_sizes with FMS1 emulation
- NOAA-GFDL/MOM6@f54338ad1 Fix non-standard white space (#109)
- NOAA-GFDL/MOM6@d729c679a +Remove append_substring
- NOAA-GFDL/MOM6@d8bc9639e Removal of non-standard extensions
- NOAA-GFDL/MOM6@7a147ad41 +Document or eliminate undocumented interfaces
- NOAA-GFDL/MOM6@e9fdf5de3 Standardized syntax in mask2d logical tests
- NOAA-GFDL/MOM6@c150f37a1 Correct --with-driver args for coupled tests (#106)
- NOAA-GFDL/MOM6@6809ee3a4 Fix tides_CS attribute in unsplit mode (#103)
- NOAA-GFDL/MOM6@28ff86e4e +Convective adjustment outside regridding_main
- NOAA-GFDL/MOM6@fd2060cda +Add Hybgen regridding
- NOAA-GFDL/MOM6@138396107 It would be good to initialize CS%answers_2018.
- NOAA-GFDL/MOM6@8d92579b2 Deleted an unused function, made public OBC funcs.
- NOAA-GFDL/MOM6@9c22ff272 Taking out some unused OBC constants.
- NOAA-GFDL/MOM6@3c7bd19ee More cleaning up for issue #54
- NOAA-GFDL/MOM6@d2fb2d0ed MOM_random: Set mask with bits rather than integer
- NOAA-GFDL/MOM6@a5350219b Mixed layer restrat statement function refactor
- NOAA-GFDL/MOM6@936b11fb6 Format string fixes; function index reorder
- NOAA-GFDL/MOM6@4b218c07a Tweaks in response to Hallberg's comments.
- NOAA-GFDL/MOM6@57a1a8ae2 Rest of fix for issue #54.
- NOAA-GFDL/MOM6@41757c7a5 Fix the rebase
- NOAA-GFDL/MOM6@f50551ce4 Fix to Z_RESCALE bug in ePBL.
- NOAA-GFDL/MOM6@1e6924e03 More fixes for issue #54.
- NOAA-GFDL/MOM6@24f412d77 Part of the fix for issue #54.
- NOAA-GFDL/MOM6@6f48b9d1d Oops, more cleanup.
- NOAA-GFDL/MOM6@1853352a6 correction on type in directory name
- NOAA-GFDL/MOM6@28003a8f7 Adding in that SAL commit again.
- NOAA-GFDL/MOM6@4a9162839 Undoing some patches from others
- NOAA-GFDL/MOM6@11fa11406 Done with EPBL docs?
- NOAA-GFDL/MOM6@918742bbb Working on boundary layer docs.
- NOAA-GFDL/MOM6@a180d3316 return a more accurate error message in MOM_stochasics
- NOAA-GFDL/MOM6@1428a36ac Several little things, one is making sponge less verbose.
- NOAA-GFDL/MOM6@aac6b75dd update to gfdl 20210806 (#74)
- NOAA-GFDL/MOM6@71f7354d9 add comments
- NOAA-GFDL/MOM6@8775c6d41 revert logic wrt increments
- NOAA-GFDL/MOM6@64e83b7aa add logic to remove incrments from restart if outside IAU window
- NOAA-GFDL/MOM6@3e573eb11 add write_stoch_restart_ocn to MOM_stochastics
- NOAA-GFDL/MOM6@8382652d5 doxygen cleanup
- NOAA-GFDL/MOM6@97bbdbf6f move stochastics to external directory
- NOAA-GFDL/MOM6@199126eb7 stochastic physics re-write
- NOAA-GFDL/MOM6@0932b9ec1 remove debug statements
- NOAA-GFDL/MOM6@ebe9d1f6f remove PE_here from mom_ocean_model_nuopc.F90
- NOAA-GFDL/MOM6@077413af9 clean up of mom_ocean_model_nuopc.F90
- NOAA-GFDL/MOM6@b12c09cbb revert MOM_domains.F90
- NOAA-GFDL/MOM6@80fdfb4e8 remove stochastics container
- NOAA-GFDL/MOM6@65e0e71bb clean up of code for MOM6 coding standards
- NOAA-GFDL/MOM6@121ce71b3 correct coupled_driver/ocean_model_MOM.F90 and other cleanup
- NOAA-GFDL/MOM6@045d5c2db make stochastics optional
- NOAA-GFDL/MOM6@f874d1113 clean up MOM_domains
- NOAA-GFDL/MOM6@390fee8d0 re-write of stochastic code to remove CPP directives
- NOAA-GFDL/MOM6@48354da37 fix non stochastic ePBL calculation
- NOAA-GFDL/MOM6@583c6ae1e clean up code
- NOAA-GFDL/MOM6@878543d22 clean up debug statements
- NOAA-GFDL/MOM6@095c36ca4 additions for stochy restarts
- NOAA-GFDL/MOM6@6ff36ec6d add stochy_restart writing to mom_cap
- NOAA-GFDL/MOM6@cefdb81ed Update MOM_diabatic_driver.F90
- NOAA-GFDL/MOM6@2f5d83d3c Update MOM_diabatic_driver.F90
- NOAA-GFDL/MOM6@b6ac287b6 Update MOM_diabatic_driver.F90
- NOAA-GFDL/MOM6@45acf37f1 cleanup of code and enhancement of ePBL perts
- NOAA-GFDL/MOM6@e853f839b additions for stochastic physics and ePBL perts
- NOAA-GFDL/MOM6@78c574be1 Add missing h_neglect (#98)
- NOAA-GFDL/MOM6@edd3f9c68 +Corrected units in dumbbell get_param calls
- NOAA-GFDL/MOM6@db59e142d MOM_neutral_diffusion code cleanup
- NOAA-GFDL/MOM6@063ef75fa Minor get_param call reformatting
- NOAA-GFDL/MOM6@6bfd073b2 +Avoid nonsensical units descriptions
- NOAA-GFDL/MOM6@c626cc464 MOM_internal_tides diagnostic code simplification
- NOAA-GFDL/MOM6@305f74473 Rescale new_depth in apply_topography_edits_from_file
- NOAA-GFDL/MOM6@39206d91b Simplify diagnostics using global_area_integral
- NOAA-GFDL/MOM6@a6992a9d6 Convert global_area_mean diagnostics when writing
- NOAA-GFDL/MOM6@9c4363ed2 +Add optional conversion argument to register_diag_scalar
- NOAA-GFDL/MOM6@356671c20 +Refactor writing the vertical_coordinate file
- NOAA-GFDL/MOM6@08582eead add residual loss term for internal tides (#95)
- NOAA-GFDL/MOM6@4c5e98e1b Error handler support
- NOAA-GFDL/MOM6@2ac64b39c Set INPUT_STR_LENGTH to 1024
- NOAA-GFDL/MOM6@4e94c5d6a Reduce the populate_param_data memory footprint
- NOAA-GFDL/MOM6@3b5d2641a Support arbitrarily long parameter spec lines
- NOAA-GFDL/MOM6@97331e705 +Better multi-line parameter specification handling
- NOAA-GFDL/MOM6@8bf9abbad reworked algebra corner spread, rotation parenthesis (#90)
- NOAA-GFDL/MOM6@ce22d7aea add missing shared variable
- NOAA-GFDL/MOM6@115d71477 Ice dynamics (#80)
- NOAA-GFDL/MOM6@7c3f31bd4 +(*)Write unscaled MOM6 restart files
- NOAA-GFDL/MOM6@11d03b13b +Add unit conversion capability for restarts
- NOAA-GFDL/MOM6@966d50f15 (*)Minor MOM_hor_visc code cleanup
- NOAA-GFDL/MOM6@ab4d226bb +(*)MOM_hor_visc bug fix and loop size cleanup
- NOAA-GFDL/MOM6@8c6ae0eea Corrected the license on RGC_initialization.F90
- NOAA-GFDL/MOM6@a002923ae (*)Fix rescaling in RGC_initialize_sponges
- NOAA-GFDL/MOM6@14a28f477 Avoid copying the tracer registry in advect_tracer
- NOAA-GFDL/MOM6@5a8590b03 +Add Laplacian diffusion of interface heights
- NOAA-GFDL/MOM6@406bc59cd Merge remote-tracking branch 'alexandra/main' into dev/esmg
- NOAA-GFDL/MOM6@9c341f06e Merge remote-tracking branch 'gfdl/dev/gfdl' into dev/esmg
- NOAA-GFDL/MOM6@3675c2169 +Add Hybgen remapping options
- NOAA-GFDL/MOM6@304294260 Fix nolibs build in CI pipeline
- NOAA-GFDL/MOM6@d5601696e +Stop logging NEW_SPONGES
- NOAA-GFDL/MOM6@6963b222d Add KPP nonlocal term to passive tracers (#202)
- NOAA-GFDL/MOM6@efa503bd2 bugfix: static h_new shape remaining_transport_sum
- NOAA-GFDL/MOM6@b4a67c1ad Merge remote-tracking branch 'gfdl/dev/gfdl' into dev/esmg
- NOAA-GFDL/MOM6@464046138 (*)Avoid negative thicknesses in mixed_layer_restrat
- NOAA-GFDL/MOM6@9a01cd501 +Add ALE options mimicking Hycom
- NOAA-GFDL/MOM6@9caa7010f (+) Refactor of MOM_file_parser
- NOAA-GFDL/MOM6@fa2832c11 +(*)Rescale variables with homogenize_forcing
- NOAA-GFDL/MOM6@b3e80f73f +(*)Add tmp_scale arguments to global_area_mean
- NOAA-GFDL/MOM6@a468bee03 Removed trailing white space
- NOAA-GFDL/MOM6@a0d02387e (*)+Use reproducing stocks for all tracer packages
- NOAA-GFDL/MOM6@1bf82205a (*)+Reproducing tracer stocks
- NOAA-GFDL/MOM6@8197cea79 Use global_mass_integral in lateral_bdry_diff
- NOAA-GFDL/MOM6@9c7bf292d +Add global_mass_int_EFP
- NOAA-GFDL/MOM6@d46dbc775 Report mean temperature from MOM_state_stats()
- NOAA-GFDL/MOM6@65b2c8249 Merge remote-tracking branch 'gfdl/dev/gfdl' into dev/esmg
- NOAA-GFDL/MOM6@149073fea Remove hard-wired parameter in adjustEtaToFitBathymetry (#69)
- NOAA-GFDL/MOM6@32e1ecf45 Fixes issues with the GME code and get_param calls for Leith options (#65)
- NOAA-GFDL/MOM6@098f5c9d9 fix u10_sqr dimensional scaling
- NOAA-GFDL/MOM6@b39648adc merge with latest main (2020feb17) and resolve conflicts
- NOAA-GFDL/MOM6@e84160915 remove unnecessary optional flag
- NOAA-GFDL/MOM6@c166358b2 Add optional argument to FMS2 version of get_field_size
- NOAA-GFDL/MOM6@fc5253f73 (*)Correct memory declarations in MOM_regridding
- NOAA-GFDL/MOM6@035ae5c85 Misc dimensional consistency fixes in regridding, remapping, and MEKE routines
- NOAA-GFDL/MOM6@75bf521e2 +Move MOM_scaling_check.F90 to MOM_unique_scales.F90
- NOAA-GFDL/MOM6@56401b637 +Add MOM_check_scaling.F90 and MOM_scaling_check.F90
- NOAA-GFDL/MOM6@c18185422 fix line lenght error in MOM_wave_interface
- NOAA-GFDL/MOM6@ebb643af9 Oops, more cleanup.
- NOAA-GFDL/MOM6@65cccb7a0 correction on type in directory name
- NOAA-GFDL/MOM6@45d615191 Adding in that SAL commit again.
- NOAA-GFDL/MOM6@3dbf2f58d Undoing some patches from others
- NOAA-GFDL/MOM6@71908c8fd Done with EPBL docs?
- NOAA-GFDL/MOM6@b7b4141a6 Working on boundary layer docs.
- NOAA-GFDL/MOM6@c3ff425ce return a more accurate error message in MOM_stochasics
- NOAA-GFDL/MOM6@348a81b63 Several little things, one is making sponge less verbose.
- NOAA-GFDL/MOM6@9221b5d50 update to gfdl 20210806 (#74)
- NOAA-GFDL/MOM6@59e733f3e add comments
- NOAA-GFDL/MOM6@15e402940 revert logic wrt increments
- NOAA-GFDL/MOM6@78b8d7919 add logic to remove incrments from restart if outside IAU window
- NOAA-GFDL/MOM6@a5d90655d add write_stoch_restart_ocn to MOM_stochastics
- NOAA-GFDL/MOM6@e91c96609 doxygen cleanup
- NOAA-GFDL/MOM6@cf1d29628 move stochastics to external directory
- NOAA-GFDL/MOM6@493717a35 stochastic physics re-write
- NOAA-GFDL/MOM6@a67bc78a2 remove debug statements
- NOAA-GFDL/MOM6@e2431bc81 remove PE_here from mom_ocean_model_nuopc.F90
- NOAA-GFDL/MOM6@ea36db238 clean up of mom_ocean_model_nuopc.F90
- NOAA-GFDL/MOM6@4c931094f revert MOM_domains.F90
- NOAA-GFDL/MOM6@c7531a75f remove stochastics container
- NOAA-GFDL/MOM6@08dc1a44b clean up of code for MOM6 coding standards
- NOAA-GFDL/MOM6@e80d5f57e correct coupled_driver/ocean_model_MOM.F90 and other cleanup
- NOAA-GFDL/MOM6@0bf4ff0a1 make stochastics optional
- NOAA-GFDL/MOM6@9e7029ca8 clean up MOM_domains
- NOAA-GFDL/MOM6@58f1fe98f re-write of stochastic code to remove CPP directives
- NOAA-GFDL/MOM6@15dde3622 fix non stochastic ePBL calculation
- NOAA-GFDL/MOM6@49111ff9f clean up code
- NOAA-GFDL/MOM6@0c48bfc6a clean up debug statements
- NOAA-GFDL/MOM6@becb4420e additions for stochy restarts
- NOAA-GFDL/MOM6@36ce2d108 add stochy_restart writing to mom_cap
- NOAA-GFDL/MOM6@5f6973b4d Update MOM_diabatic_driver.F90
- NOAA-GFDL/MOM6@c48a46ae0 Update MOM_diabatic_driver.F90
- NOAA-GFDL/MOM6@a0e5b56af Update MOM_diabatic_driver.F90
- NOAA-GFDL/MOM6@a534541c5 cleanup of code and enhancement of ePBL perts
- NOAA-GFDL/MOM6@0add693a8 additions for stochastic physics and ePBL perts
- NOAA-GFDL/MOM6@a00b7799f Merge remote-tracking branch 'NCAR/surfbands_refactor' into BGR_Stokes_DDT_Fixes
- NOAA-GFDL/MOM6@dc59b117b Fixing restart issue with Stokes time tendency term.
- NOAA-GFDL/MOM6@f89fd1351 Fixing diagnostic mode for vortex force correction term.
- NOAA-GFDL/MOM6@58874a5f3 Updates	to Stokes drift	terms, primarily the pressure gradient routine.
- NOAA-GFDL/MOM6@4f592f298 More changes for surfbands wave coupling: - for ustkb and vstkb, call pass_var, instead of pass_vector because they are on h grd. -remove unused ustk0 and vstk0 arrays. - correct the order of wave-related get param & allocate_forcing calls in nuopc cap. - add lamult flag to allocate_forcing_by_group because lamult should only be allocated if wave_method=="EFACTOR".
- NOAA-GFDL/MOM6@28268d3e6 fixes in MOM_wave_interface array indices
- NOAA-GFDL/MOM6@dc93bdeef Fixes for Stokes time tendency terms
- NOAA-GFDL/MOM6@b619d38eb remove duplicate assignments of dvdx and dudy. These duplicate assignments incorrectly override dvdx and dudy when surfbands wave coupling is on.
- NOAA-GFDL/MOM6@cb671d2c0 merge with latest dev/ncar and resolve conflicts
- NOAA-GFDL/MOM6@d4c36a60a Fix openmp test by adding Stokes_VT to shr clause in MOM_CoriolisAdv. Also remove the Passive_Stokes_VF block since it's never set to true.
- NOAA-GFDL/MOM6@e2ab77e99 initialize wave option flags to false
- NOAA-GFDL/MOM6@c880a156a For the drivers calling MOM_wave_interface_init, add the optional waves_csp arg to initialize_MOM calls so as to ensure that the waves_csp is allocated. This commit also has several misc doxygen fixes.
- NOAA-GFDL/MOM6@e7f628e17 refactoring and changes to write stokes drift profile to restart file when surfbands wave coupling mode is on.
- NOAA-GFDL/MOM6@15c3d53de changes in the nuopc cap to support arbitrary stokes bands With these changes, arbitrary number of of partitioned stokes drift components may be imported from ww3 when coupled within cesm. After the planned unification of ww3 nuopc caps of CESM and EMC, the old (fixed) approach may be removed.
- NOAA-GFDL/MOM6@eacd9d016 fix doxygen errors in surfbands_refactor branch
- NOAA-GFDL/MOM6@a0d1d9982 Do not call get_Langmuir_Number if lamult is already provided via ww3
- NOAA-GFDL/MOM6@b1c341248 enclose stokes vorticity diag computations with Stokes_VF conditional
- NOAA-GFDL/MOM6@824039dac enclose stokes vorticity diag computations with Stokes_VF conditional
- NOAA-GFDL/MOM6@59a31f62c remove unnecessary ampersands from variable declarations
- NOAA-GFDL/MOM6@dcf30ac50 merge pr1507 with dev/ncar and resolve conflicts in MOM_tidal_mixing
- NOAA-GFDL/MOM6@6e94b699b disable the register of tidal mixing coeff diags when they are unavailable
- NOAA-GFDL/MOM6@e3d190db3 In NUOPC cap, add ability to import fields with ungridded dimensions
- NOAA-GFDL/MOM6@380a04090 Merge remote-tracking branch 'breichl/Stokes_Forces' into pstokes_wave_cpl_mehtod
- NOAA-GFDL/MOM6@c5f1d442e Updating name of Stokes PGF routine to be more descriptive.
- NOAA-GFDL/MOM6@a6de11c92 Remote application of Stokes tendency on thermodynamic step
- NOAA-GFDL/MOM6@9fbdf11ec Finish incomplete merge in MOM_wave_interface.
- NOAA-GFDL/MOM6@77084ecc9 Adding Stokes forces implementation and diags.

SIS2: Replace MOM_memory.h with SIS2_memory.h

- NOAA-GFDL/SIS2@55dbb3a Replace MOM_memory.h with SIS2_memory.h
- NOAA-GFDL/SIS2@33589c6 Fixed the syntax of new comments in PR #173
- NOAA-GFDL/SIS2@164e404 Getting OBCs with MERGED_CONTINUITY to work
- NOAA-GFDL/SIS2@d62188d OBC's for C-grid stress.
- NOAA-GFDL/SIS2@c84a83b Start of ice OBCs - it compiles.
- NOAA-GFDL/SIS2@2ac240a Merge remote-tracking branch 'gfdl/dev/gfdl' into dev/esmg
- NOAA-GFDL/SIS2@a9884b8 Merge remote-tracking branch 'gfdl/dev/gfdl' into dev/esmg
- NOAA-GFDL/SIS2@3399a73 Merge remote-tracking branch 'gfdl/dev/gfdl' into dev/esmg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants