From 5b02c9eb3fd929be59e1ca65451e1a1a74292dda Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 17 Dec 2019 10:18:24 -0700 Subject: [PATCH] Round cloud-fractions to avoid McICA sampling error. --- physics/rrtmgp_lw_cloud_sampling.F90 | 8 ++++++-- physics/rrtmgp_sw_cloud_sampling.F90 | 7 ++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/physics/rrtmgp_lw_cloud_sampling.F90 b/physics/rrtmgp_lw_cloud_sampling.F90 index 6bdf6b4ae..2172bb374 100644 --- a/physics/rrtmgp_lw_cloud_sampling.F90 +++ b/physics/rrtmgp_lw_cloud_sampling.F90 @@ -72,6 +72,7 @@ subroutine rrtmgp_lw_cloud_sampling_run(doLWrad, nCol, nLev, ipsdlw0, icseed_lw, real(kind_phys), dimension(lw_gas_props%get_ngpt(),nLev,ncol) :: rng3D real(kind_phys), dimension(lw_gas_props%get_ngpt()*nLev) :: rng1D logical, dimension(ncol,nLev,lw_gas_props%get_ngpt()) :: cldfracMCICA + real(kind_phys), dimension(ncol,nLev) :: cld_frac_noSamp ! Initialize CCPP error handling variables errmsg = '' @@ -102,12 +103,15 @@ subroutine rrtmgp_lw_cloud_sampling_run(doLWrad, nCol, nLev, ipsdlw0, icseed_lw, call random_number(rng1D,rng_stat) rng3D(:,:,iCol) = reshape(source = rng1D,shape=[lw_gas_props%get_ngpt(),nLev]) enddo - + + ! Test: Remove McICA sampling error by setting cloud-fraction to one. + cld_frac_noSamp = ceiling(cld_frac) + ! Call McICA select case ( iovrlw ) ! Maximumn-random case(1) - call check_error_msg('rrtmgp_lw_cloud_sampling_run',sampled_mask_max_ran(rng3D,cld_frac,cldfracMCICA)) + call check_error_msg('rrtmgp_lw_cloud_sampling_run',sampled_mask_max_ran(rng3D,cld_frac_noSamp,cldfracMCICA)) end select ! Map band optical depth to each g-point using McICA diff --git a/physics/rrtmgp_sw_cloud_sampling.F90 b/physics/rrtmgp_sw_cloud_sampling.F90 index b290594ea..60f46d0db 100644 --- a/physics/rrtmgp_sw_cloud_sampling.F90 +++ b/physics/rrtmgp_sw_cloud_sampling.F90 @@ -76,6 +76,7 @@ subroutine rrtmgp_sw_cloud_sampling_run(doSWrad, nCol, nDay, nLev, ipsdsw0, idxd real(kind_phys), dimension(sw_gas_props%get_ngpt(),nLev,ncol) :: rng3D real(kind_phys), dimension(sw_gas_props%get_ngpt()*nLev) :: rng1D logical, dimension(ncol,nLev,sw_gas_props%get_ngpt()) :: cldfracMCICA + real(kind_phys), dimension(ncol,nLev) :: cld_frac_noSamp ! Initialize CCPP error handling variables errmsg = '' @@ -108,11 +109,15 @@ subroutine rrtmgp_sw_cloud_sampling_run(doSWrad, nCol, nDay, nLev, ipsdsw0, idxd rng3D(:,:,iCol) = reshape(source = rng1D,shape=[sw_gas_props%get_ngpt(),nLev]) enddo + + ! Test: Remove McICA sampling error by setting cloud-fraction to one. + cld_frac_noSamp = ceiling(cld_frac) + ! Call McICA select case ( iovrsw ) ! Maximumn-random case(1) - call check_error_msg('rrtmgp_sw_cloud_sampling_run',sampled_mask_max_ran(rng3D,cld_frac,cldfracMCICA)) + call check_error_msg('rrtmgp_sw_cloud_sampling_run',sampled_mask_max_ran(rng3D,cld_frac_noSamp,cldfracMCICA)) end select ! Map band optical depth to each g-point using McICA