In the CESM COARE atmosphere-ocean flux calculations, the surface latent heat flux is calculated like so:
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:
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:
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!
In the CESM COARE atmosphere-ocean flux calculations, the surface latent heat flux is calculated like so:
With the
Levariable representing the latent heat of vaporization, and the rest of the terms combining to be the surface evaporation (water vapor mass) flux. In COARELeis the "constant" latent heat of vaporization with an applied ocean surface temperature adjustment:where
loc_latvapis the constant value, andtsis 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-adjustedLevariable, but instead the constant value:where
lat(n)is the same ashlb. This results in anLe/loc_latvap, or1 - .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
evapout directly from COARE, or simply useLeinstead ofloc_latvapin the lat->evap conversion.Credit goes to Benjamin Barr for confirming the existence of the bug!