ESCOMP / ESCOMP/CMEPS

Latent heat bug in COARE atm/ocn flux routine for CESM

Open
#684 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Fortran
Stars
35
Forks
106
Avg merge
6d 5h
Merged PRs (30d)
4

Description

In the CESM COARE atmosphere-ocean flux calculations, the surface latent heat flux[ is calculated like so](https://github.com/ESCOMP/CMEPS/blob/main/cesm/flux_atmocn/flux_atmocn_COARE_mod.F90#L402):

> hlb=-rhoa * Le * usr * qsr

With the `Le` variable representing the latent heat of vaporization, and the rest of the terms combining to be the surface evaporation (water vapor mass) flux. In COARE `Le` is the "constant" latent heat of vaporization with an applied [ocean surface temperature adjustment](https://github.com/ESCOMP/CMEPS/blob/main/cesm/flux_atmocn/flux_atmocn_COARE_mod.F90#L292):

> Le = loc_latvap - .00237e6_R8 * (ts-273.16_R8)

where `loc_latvap` is the constant value, and `ts` is the ocean surface temperature. The latent heat flux (`hlb`) term is then passed out from COARE, and converted back into an evaporation flux for use by CESM. However, that conversion doesn't use the the temperature-adjusted `Le` variable, but instead [the constant value](https://github.com/ESCOMP/CMEPS/blob/main/cesm/flux_atmocn/flux_atmocn_COARE_mod.F90#L189):

> evap(n) = lat(n)/loc_latvap

where `lat(n)` is the same as `hlb`. This results in an `Le/loc_latvap`, or `1 - .00237e6_R8 * (ts-273.16_R8)/loc_latvap`, bias in the evaporation flux to CESM relative to what COARE actually predicts.

The fix is either to just pass `evap` out directly from COARE, or simply use `Le` instead of `loc_latvap` in the lat->evap conversion.

Credit goes to Benjamin Barr for confirming the existence of the bug!

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.