-
Notifications
You must be signed in to change notification settings - Fork 235
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
Dev master candidate NCAR 03/27/2020 #1081
Dev master candidate NCAR 03/27/2020 #1081
Conversation
First stab at parameterizing the diabatic mixing by mesoscale eddies using a 'bulk layer' approach. Added a simple unit test where column thickness is exactly equal to the boundary layer depth, equal, layer thicknesses, and the tracer gradient points from right to left. Go Gustavo and Andrew
Add more complex unit tests and begin work on improving the algorithm to deal with cases where the boundary layer intersects within a layer.
For the near-boundary lateral mixing, the indices of the layers that are spanned by the boundary layer need to be returned. Additionally, in cases where the boundary layer intersects partway through a layer, the non-dimensional position also needs to be returned for polynomial reconstructions to be evaluated correctly. Six unit tests were added to test this new function. All unit tests currently pass
Many updates to allow the boundary layer to intersect a layer. Commented out some of the unit test previously added as the API has changed. These need to be revisited later.
…hen computing fluxes
- Add two unit tests for cases where the surface boundary layer intersects partly through a cell. 1. Right column same BLT, same thicknesses, flux from right to left, constant in the vertical 2. Right column same BLT, same thicknesses, flux from right to left, linear profile on right TODO: 1. Uncomment out previous unit tests 2. Update API in those test cases 3. Need to add similar unit tests for the bottom boundary
This updates all the previously commented out unit tests to update the API. These changes were required to allow for cases where the boundary layer that intersects partway through a model layer.
All the development in the boundary layer mixing scheme has focused on simple unit tests. This provides a skeleton for some of the interfaces that will need to be in place before using the new parameterization in a 'real' MOM6 simulation
- Pass diabatic CS through tracer_hor_diff_init and lateral_boundary_mixing_init. - Modify extract_diabatic_member to return KPP and ePBL CS - Finish initialization for lateral_boundary_mixing
The new lateral boundary mixing routine has been added into tracer_hor_diff and needs to be tested in a 'real' configuration. This only works with KPP for now because ePBL needs US passed which is not currently implemented in the API for tracer_hor_diff
Calculation of fluxes needs to be masked otherwise NaNs will definitely be calcualted
The CVMix KPP module would allocate it's control structure regardless of wthether KPP was used or not. The allocate statement has been moved down after USE_KPP has been parsed.
- Indexing error in the y-direction led to a non-conservation of tracer - Extra guards added to avoid divisions by zero - Pass US through to lateral_boundary_mixing to enable compatibility with ePBL
Diffusive fluxes calculated from the lateral boundary mixing scheme of tracers have been added as a diagnostic to the tracer registry. The total 'bulk' flux was added as well
The get_MLD and get_BLD routines only return boundary layer depths on the T-grid's computational domain leading to striping when calculating the LBM fluxes. Adding a halo update for this variable fixes the problem
TODO: * add code for boundary = BOTTOM * add unit tests
Fix OMP race conditions and some chkcsum calls
Fix a bug in GM when using MEKE_GEOMETRIC
Following changes have been made: * add new argument (thickness_diffuse_CS) to horizontal_viscosity; this is needed so that the GM coeff can be called from MOM_hor_visc. * Deletes unnecessary calls to pass_vector * Simplifies GME by removing dependecy on MEKE. GME is now set to be some multiple of the GM coeff. A new runtime parameter (GME_efficiency) can be used to control the strength of GME.
…de_MEKE Updates GME by removing dependency on MEKE
Fix thread-unsafe computations of advective tracer flux vertical sums
Codecov Report
@@ Coverage Diff @@
## dev/master #1081 +/- ##
===========================================
Coverage 45.30% 45.30%
===========================================
Files 213 213
Lines 63234 63234
===========================================
Hits 28648 28648
Misses 34586 34586 Continue to review full report at Codecov.
|
As per usual can @awallcraft, @kshedstrom and @jiandewang evaluate this PR. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've run this through our tests which all passed (as you knew it would).
I especially liked the bug catch (NCAR#141) that is a good example of why we perhaps should not allow single-line multi-statements. Thank goodness for the gnu compiler!
My only query is about the naming of CDRAG_MEKE. With one exception, every other MEKE parameter is named MEKE_* so could we have this renamed to MEKE_CDRAG for consistency?
I've run the (not-yet-merged) rotational tests and these tests have passed. And I second the proposal to reconsider phasing out multi-statement lines! |
Done. |
With the new parameter name GFDL team is ready to accept this PR. Now over to @jiandewang, @awallcraft @kshedstrom |
I approve this PR. |
1 similar comment
I approve this PR. |
works fine in NCEP UFS, approve this PR |
Summary:
Add module
MOM_lateral_boundary_diffusion
. This module calculates and applies diffusive fluxes as a parameterization of lateral mixing (non-neutral) by mesoscale eddies near the top and bottom (to be implemented) boundary layers of the ocean. See #135 for further detailsCreate NCAR fork of Doxygen #123
Modify MEKE to allow GME to work properly #128
Adds option to scale KHTH with depth #127
Add option to pass river runoff via
data_override
in the NUOPC cap #130Create a separate param for
MEKE
bottom drag #131Fix bugs in
Leith
add new input parameter #134Fix bugs caught by GNU compiler #141
Fix a bug in
thickness_diffuse
when usingMEKE_GEOMETRIC
#143Update
GME
by removing its dependency onMEKE
#144OMP directives fixes #146, #142
This PR does not change answers for the GFDL tests when evaluated against the latest dev/master (intel/17.0.1). However, it adds the following runtime parameters: