xianbiaokang@gmail_com
New Member
I have found that the radiation cloud overlap described in the technical note and the source code is different. Maybe I searched in the wrong place. Is there anyone can hlep me out? thanks you very much.
in the technical note of CAM5.0, it says : " it assumes a maximum vertical overlap in each of the 3 regimes representing lower ( p > 700 hPa ), middle ( 400 hPa < p < 700 hPa ), and upper ( p < 400 hPa ) atmospheres, and a random vertical overlap between these 3 regimes."
However, in the source code, I find that the radiation code is using Maximum-Random overlap, I have attached the code as following, which I get from the mcica_subcol_gen_sw.f90.
case(2)
! Maximum-Random overlap
! i) pick a random number for top layer.
! ii) walk down the column:
! - if the layer above is cloudy, we use the same random number than in the layer above
! - if the layer above is clear, we use a new random number
if (irnd.eq.0) then
do isubcol = 1,nsubcol
do ilev = 1,nlay
call kissvec(seed1, seed2, seed3, seed4, rand_num)
CDF(isubcol,:,ilev) = rand_num
enddo
enddo
elseif (irnd.eq.1) then
do isubcol = 1, nsubcol
do i = 1, ncol
do ilev = 1, nlay
rand_num_mt = getRandomReal(randomNumbers)
CDF(isubcol,i,ilev) = rand_num_mt
enddo
enddo
enddo
endif
do ilev = 2,nlay
do i = 1, ncol
do isubcol = 1, nsubcol
if (CDF(isubcol, i, ilev-1) > 1._r8 - cldf(i,ilev-1) ) then
CDF(isubcol,i,ilev) = CDF(isubcol,i,ilev-1)
else
CDF(isubcol,i,ilev) = CDF(isubcol,i,ilev) * (1._r8 - cldf(i,ilev-1))
end if
end do
end do
enddo
in the technical note of CAM5.0, it says : " it assumes a maximum vertical overlap in each of the 3 regimes representing lower ( p > 700 hPa ), middle ( 400 hPa < p < 700 hPa ), and upper ( p < 400 hPa ) atmospheres, and a random vertical overlap between these 3 regimes."
However, in the source code, I find that the radiation code is using Maximum-Random overlap, I have attached the code as following, which I get from the mcica_subcol_gen_sw.f90.
case(2)
! Maximum-Random overlap
! i) pick a random number for top layer.
! ii) walk down the column:
! - if the layer above is cloudy, we use the same random number than in the layer above
! - if the layer above is clear, we use a new random number
if (irnd.eq.0) then
do isubcol = 1,nsubcol
do ilev = 1,nlay
call kissvec(seed1, seed2, seed3, seed4, rand_num)
CDF(isubcol,:,ilev) = rand_num
enddo
enddo
elseif (irnd.eq.1) then
do isubcol = 1, nsubcol
do i = 1, ncol
do ilev = 1, nlay
rand_num_mt = getRandomReal(randomNumbers)
CDF(isubcol,i,ilev) = rand_num_mt
enddo
enddo
enddo
endif
do ilev = 2,nlay
do i = 1, ncol
do isubcol = 1, nsubcol
if (CDF(isubcol, i, ilev-1) > 1._r8 - cldf(i,ilev-1) ) then
CDF(isubcol,i,ilev) = CDF(isubcol,i,ilev-1)
else
CDF(isubcol,i,ilev) = CDF(isubcol,i,ilev) * (1._r8 - cldf(i,ilev-1))
end if
end do
end do
enddo