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

Updates in Langmuir turbulence parameterization #74

Merged
merged 28 commits into from
Apr 4, 2019

Conversation

qingli411
Copy link
Contributor

New features in this PR include the following.

  • The interface to activate the Langmuir turbulence parameterization is updated to allow more options. The Langmuir mixing parameterization of Li et al., 2016 is now activated by setting langmuir_mixing_str = LWF16 and langmuir_entrainment_str = LWF16 using cvmix_init_kpp().

  • New option of Langmuir turbulence parameterization according to Li and Fox-Kemper (2017), which includes the Langmuir turbulence enhanced entrainment. This option is activated by setting langmuir_mixing_str = LWF16 and langmuir_entrainment_str = LF17 using cvmix_init_kpp().

  • New option of Langmuir turbulence parameterization according to Reichl et al., 2016. This option is activated by setting langmuir_mixing_str = LWF16 and langmuir_entrainment_str = LF17 using cvmix_init_kpp().

  • New/updated functions in cvmix_kpp.F90:

    • cvmix_kpp_efactor_model(u10, ustar, hbl, CVmix_params_in) to estimate the enhancement factor from empirical wave spectra (Li et al., 2017). This function is rewritten to call the following function.

    • cvmix_kpp_ustokes_SL_model(u10, hbl, CVmix_params_in) to estimate the surface layer averaged Stokes drift from empirical wave spectra for the Langmuir turbulence enhanced entrainment.

qingli411 and others added 25 commits July 25, 2016 14:01
…x_kpp_ustokes_SL_model() to have easier access to the predicted surface layer averaged Stokes drift.
 Conflicts:
	src/shared/cvmix_kpp.F90
1. Langmuir mixing and entrainment option 'L16' -> 'LWF16'
2. Enhancement factor is no longer an input for
cvmix_kpp_compute_turbulent_scales(), applied after
the turbulent scales are calculated.
3. Enhancement factor as an optional input for
cvmix_kpp_compute_bulk_Richardson(), required when
Langmuir_entrainment_str = 'LWF16'.
The enhancement factor was applied twice to the diffusivity when
Langmuir_Mixing_Opt = 'LWF16'.
Copy link
Contributor

@mnlevy1981 mnlevy1981 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry it took me a while to look at this. I haven't had a chance to try to run the new code in CESM - is there a way to configure this new version identically to the previous version, or should we expect answer changes in CESM?

src/shared/cvmix_kpp.F90 Show resolved Hide resolved
src/shared/cvmix_kpp.F90 Show resolved Hide resolved
bld/CompileFlags.mak Outdated Show resolved Hide resolved
src/shared/cvmix_kpp.F90 Show resolved Hide resolved
src/shared/cvmix_kpp.F90 Show resolved Hide resolved
src/shared/cvmix_kpp.F90 Show resolved Hide resolved
@qingli411
Copy link
Contributor Author

@mnlevy1981 Thanks for looking at the code and the comments! I just pushed a new commit to fix these issues.

This PR should not change the answers. It can be configured using the same Langmuir mixing option. But since some of the operations are reordered (e.g., the enhancement factor was applied directly to the turbulent velocity scale before but now is applied to the turbulent diffusivity and other places to allow new Langmuir options in a consistent way), I would not expect bit-for-bit reproducibility.

This new version requires some changes in the interface calling CVMix in CESM, but I can help with that.

  1. In subroutine init_vmix_kpp in vmix_kpp.F90, instead of passing in logical type variables for llangmuirEF and lenhanced_entr to cvmix_init_kpp(), we need to pass in strings Langmuir_mixing_str and Langmuir_entrainment_str to control which Langmuir-enhanced mixing and Langmuir-enhanced entrainment are used. For the existing Langmuir mixing options in CESM, we can still keep the langmuir_opt entry in the KPP namelist unchanged so the user interface to activate these Langmuir mixing parameterizations will be the same.
  2. Some calls to CVMix functions, such as cvmix_kpp_compute_turbulent_scales, and cvmix_kpp_compute_bulk_Richardson may need slightly different input arguments.

@mnlevy1981
Copy link
Contributor

@qingli411 Thanks for the walk-through on the expected changes in the POP driver - I'll probably try to update the pop trunk to use this version of CVMix later in the month. If I run into issues, I'll email you for more details.

@qingli411
Copy link
Contributor Author

@mnlevy1981 Sounds good.

@mnlevy1981
Copy link
Contributor

Merged into v0.94-beta, I don't know why github is detecting it as merged.

@mnlevy1981 mnlevy1981 closed this Apr 4, 2019
@mnlevy1981
Copy link
Contributor

github didn't detect it as merged because I forgot to update my local branch before pulling... trying one more time.

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

Successfully merging this pull request may close these issues.

3 participants