-
Notifications
You must be signed in to change notification settings - Fork 30
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
Option to test Danabasoglu et al 2006 limitation on zeta in the stable buoyancy case with windstorms #57
Conversation
… similarity functions in the turbulent scales routine to the original Large et al. (1994) formulation. In particular this applies to the stable buoyancy forcing with wind stress case. In KPP, the similarity function in this regime is given as 1 + 5*zeta where zeta == sigma * OBL_depth / Monin_obukhov_length and sigma == depth/OBL_depth In Large et al. (1994), zeta is allowed to vary from 0 to 1. This is mostly an assumption that scalings in the surface layer continue through the boundary layer. However, Appendix B of Large et al. (1994) reference some observational support for this. In Danabasoglu et al. (2006), Appendix A, zeta is confined to run between zero and epsilon, where epsilon == surface layer extent / OBL_depth (usually taken as 0.1). This was done to increase the unresolved velocity shear in the bulk richardson number calculation (see Equations A1 and A2 of Danabasoglu et al (2006)). In tests conducted against LES (I am using the NCAR LES) forced by a constant wind stress and positive buoyancy forcing, the corresponding SCM result without the limitation on zeta is closer to LES. In this branch you can set l_LMD_ws in the cvmix_kpp_init routine. If this is set to true, the limitaton on zeta is removed in stable buoyancy forcing conditions, assuming the windstress is not zero. The default for this flag is false, so doing nothing will result in the current CVMIX implementation.
Hi Luke, Sorry to take so long to get back to you about this (I think I also owe you an email about testing in POP). I like what you have done, but would make one suggestion -- at line 1858, where you have
I would prefer to see something like
where
That's completely untested code, so I may have some dimension issues, but the main idea is that I don't like seeing zeta set by identical formulas in two different places (lines 1866/67 and lines 1872/73); introducing a local variable for the proper value of sigma to use (either sigma_coord or surface_layer_ext, depending on the logicals) and computing zeta in just a single place seems less error prone if something changes in the future. A similar comment holds for the block of code at line 2000. |
This commit changes how the original LMD94 w_s value is computed. A local value of sigma_coord is introduced instead of computing zeta twice.
Hello Michael, |
Two things:
I'll make a new branch this weekend with your changes & my code-style recommendations (without removing existing functionality) and point you to it to make sure it looks okay. At this point I think we want to try to start a clean pull request (I'll leave this one open until the new one is available). |
Closing this in favor of #62 -- @vanroekel can you please try this version of the code and make sure it behaves the way you expect? It has passed my brief tests, so I believe the default behavior has not changed. |
This branch adds an option to revert a part of the computation of the similarity functions in the turbulent scales routine to the original Large et al.
(1994) formulation. In particular this applies to the stable buoyancy
forcing with wind stress case. In KPP, the similarity function in this
regime is given as
1 + 5*zeta
where zeta == sigma * OBL_depth / Monin_obukhov_length and sigma ==
depth/OBL_depth
In Large et al. (1994), zeta is allowed to vary from 0 to 1. This is
mostly an assumption that scalings in the surface layer continue through
the boundary layer. However, Appendix B of Large et al. (1994)
reference some observational support for this.
In Danabasoglu et al. (2006), Appendix A, zeta is confined to run
between zero and epsilon, where epsilon == surface layer extent /
OBL_depth (usually taken as 0.1). This was done to increase the
unresolved velocity shear in the bulk richardson number calculation (see
Equations A1 and A2 of Danabasoglu et al (2006)).
In tests conducted against LES (I am using the NCAR LES) forced by a
constant wind stress and positive buoyancy forcing, the corresponding
SCM result without the limitation on zeta is closer to LES.
In this branch you can set l_LMD_ws in the cvmix_kpp_init routine. If
this is set to true, the limitaton on zeta is removed in stable buoyancy
forcing conditions, assuming the windstress is not zero (see for example cvmix_kpp_compute_turbulent_scales_1d). The default
for this flag is false, so doing nothing will result in the current
CVMIX implementation.