Affected Releases CESM2.0.0A bug has been identified in the release code of CESM2.0.0 regarding the evaporation of rain number in Morrison-Gettelman V2 (MG2) cloud microphysics. This bug has been fixed in the cam6_0_005 tag, which was checked in to the CAM development trunk on July 16, 2018. Testing in a coupled piControl simulation reveals the effects of fixing this bug to be very small in the global average. A global average increase in RESTOM of the order 0.01 W m-2 is seen. However, there is more significant redistribution of shortwave cloud forcing over the Pacific Ocean. A 20th Century simulation is ongoing, and impacts will be reported here. The bug involves 3 lines (in bold below) in one subroutine: components/cam/src/physics/cam/micro_mg2_0.F90 ______________________________ do i=1,mgncol ! conservation of rain number !------------------------------------------------------------------- ! Add evaporation of rain number. if (pre(i,k) < 0._r8) then dum = pre(i,k)*deltat/qr(i,k) dum = max(-1._r8,dum) nsubr(i,k) = dum*nr(i,k)/deltat else nsubr(i,k) = 0._r8 end if end do______________________________
The intended behavior for these three lines is:Calculate the fraction of rain mass that is being evaporated in the current time step.Limit that fraction to no more than 1 (i.e. do not evaporate more rain than we actually have).Evaporate the same fraction of the rain number.[/list]However, this code mixes quantities that are averaged over the grid cell, and those only covering the fraction of the cell with precipitation. The effect of the bug is to produce rain drops that are too small in some circumstances, and the correction will cause the particle size to increase.The limiter is redundant with both the mass conservation code above it (which prevents pre from being too large in the first place), and the number conservation code below it (which would limit nsubr anyway). The bug fix removes this redundant limiter, replacing all three lines with one line (in bold below):______________________________
______________________________
The intended behavior for these three lines is:Calculate the fraction of rain mass that is being evaporated in the current time step.Limit that fraction to no more than 1 (i.e. do not evaporate more rain than we actually have).Evaporate the same fraction of the rain number.[/list]However, this code mixes quantities that are averaged over the grid cell, and those only covering the fraction of the cell with precipitation. The effect of the bug is to produce rain drops that are too small in some circumstances, and the correction will cause the particle size to increase.The limiter is redundant with both the mass conservation code above it (which prevents pre from being too large in the first place), and the number conservation code below it (which would limit nsubr anyway). The bug fix removes this redundant limiter, replacing all three lines with one line (in bold below):______________________________
Code:
do i=1,mgncol
Code:
! conservation of rain number
Code:
!-------------------------------------------------------------------
Code:
! Add evaporation of rain number.
Code:
if (pre(i,k) < 0._r8) then
Code:
<span style="color: #0433ff;"> <strong>nsubr(i,k) = pre(i,k)*nr(i,k)/qr(i,k)</strong></span>
Code:
else
Code:
nsubr(i,k) = 0._r8
Code:
end if
Code:
end do