-
Notifications
You must be signed in to change notification settings - Fork 24
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
Langmuir turbulence induced entrainment #31
Conversation
It looks like the PR as it stands is keeping the default |
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.
Thanks for cleaning up so much whitespace!
I think getting the default values of langmuir_opt
right in the XML file (and aborting in the Fortran if an invalid value is used) are important. I'm less concerned about c10000
vs bignum
or bringing in the CVMix tag that uses CMake
.
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 think it's important to include langmuir_opt
in the error message; the comment about using -1 for LASL
was just an aside, only make that change if you think it's a reasonable thing to do.
source/vmix_kpp.F90
Outdated
call exit_POP(sigAbort, & | ||
'ERROR: Unknown option for Langmuir turbulence parameterization') |
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.
Could you include the value of langmuir_opt
in the error message? I think something like
write(string, "(3A)") "Error: '", trim(langmuir_opt), "' is not a valid option for Langmuir turbulence parameterization"
call exit_POP(sigAbort, string)
Since we use string
to stage some tavg long_name
s
drivers/mct/ocn_import_export.F90
Outdated
WORKB(i,j ) = x2o(index_x2o_Sw_hstokes,n) | ||
LASL(i,j,iblock) = WORKB(i,j)*RCALCT(i,j,iblock) | ||
else | ||
LASL(i,j,iblock) = bignum |
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 know I recommended bignum
instead of c10000
, but if LASL
must be positive (per vmix_kpp.F90#L2509), does it make more sense to set LASL(i, j, iblock) = -c1
here instead of using bignum
?
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.
Yes, this is better. Then I will not need to check IFRAC
again in
Line 2509 in b029469
if (IFRAC(i,j,bid) <= 0.05_r8 .and. LASL(i,j,bid) > c0) then |
I will do that. Thanks.
drivers/nuopc/ocn_import_export.F90
Outdated
where (IFRAC <= 0.05_r8) | ||
LASL(:,:,:) = work1 * RCALCT(:,:,:) ! surface layer Lanmguir number (unitless) | ||
elsewhere | ||
LASL(:,:,:) = bignum |
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.
Same as above, maybe LASL(:,:,:) = -c1
?
…ntrol of invalid values for LaSL
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.
Looks good to me!
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.
testing: aux_pop.cheyenne_intel. answer changes
Description of changes:
This pull request enables the parameterization of Langmuir turbulence induced entrainment by Li and Fox-Kemper (2017) via CVMix. It includes the following changes:
LaSL
from WAVEWATCH III for Langmuir induced entrainment.Testing:
Test case/suite: See below
Test status: climate changing
Fixes [POP2 Github issue #]: N/A
User interface (namelist or namelist defaults) changes?
langmuir_opt = 'lf17'
in POP's namelist.I have tested these change in the following two steps using a JRA55-do forced G-case in CESM (tag cesm2_2_beta04) running for 60 years (looking at mean mixed layer depth of the last 30 years). Here the control run is using default values for the namelist. Testing with a longer simulation is underway.
langmuir_opt = 'vr12-ma'
)langmuir_opt = 'lf17'
)The first step is not bit-for-bit, as described in this PR. But it gives essentially the same mean climate, with small changes in some coastal regions where the boundary layer is very shallow. See the figure below. It's likely due to changes in the order of some operations in CVMix introduced in v0.94b-beta. Note that the panels below plot the summer/winter mean mixed layer depth in both hemispheres together, as in Li and Fox-Kemper (2017).

The second step is climate changing, making the mixed layer deeper in the extratropical regions, as expected in Li and Fox-Kemper (2017). Note the different scale in the color bar of the percentage changes.
