Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(Remove interstitial variables for land and ice emissivity and update the land and ice emissivity in the routine setemis) Sm sept21 pr #736

Merged
merged 58 commits into from
Oct 22, 2021
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
1a77835
minor change in ras
SMoorthi-emc Aug 18, 2021
2cae156
Merge remote-tracking branch 'upstream/main' into SM_Jul302021
SMoorthi-emc Aug 18, 2021
3721df1
a fix for slianl in sfcsub.F
SMoorthi-emc Aug 19, 2021
915ce6f
adding alternate cires*solv2 routine
SMoorthi-emc Aug 21, 2021
5f323e2
commit double couning of cloud diagnostic arrays in rrtmgp
SMoorthi-emc Aug 27, 2021
7748289
after merging with ccpp-physics/main
SMoorthi-emc Sep 3, 2021
252313d
Merge remote-tracking branch 'upstream/main' into SM_Jul302021
SMoorthi-emc Sep 10, 2021
2c6f85a
removing interstitial land and ice emissivities
SMoorthi-emc Sep 16, 2021
7d169b3
Merge remote-tracking branch 'upstream/main' into SM_Sep142021
SMoorthi-emc Sep 16, 2021
12d85af
improing treatment of emissivity and remove related unnecessary inter…
SMoorthi-emc Sep 17, 2021
2dd3ce4
reverting some changes to main version
SMoorthi-emc Sep 21, 2021
38a637e
fixing a bug as pointed out by Tanya Smirnova
SMoorthi-emc Sep 23, 2021
70f84bd
fixing the error in my last fix
SMoorthi-emc Sep 23, 2021
8eae622
reverting a change that happened while merging with PR branch
SMoorthi-emc Sep 23, 2021
32af5e9
just adding ablank
SMoorthi-emc Sep 23, 2021
f506e4d
some cimin bug fix
SMoorthi-emc Sep 24, 2021
2dbfdbd
after merging with ccpp-physics/main and also sfter removing lsm,lsm_…
SMoorthi-emc Sep 24, 2021
6a2cb7d
after merging with ccpp-physics/main and also sfter removing lsm,lsm_…
SMoorthi-emc Sep 24, 2021
1d3e762
updating radiation_surface.f
SMoorthi-emc Sep 25, 2021
34aa8c8
updating radiation_surface.f
SMoorthi-emc Sep 25, 2021
e39d4e6
fixing a typo in a comment line
SMoorthi-emc Sep 25, 2021
f7d4395
removing some blanks and fixing a typo in comment lines
SMoorthi-emc Sep 26, 2021
9e14237
remove some blanks in radiation_surface
SMoorthi-emc Sep 26, 2021
c0b1f13
Merge remote-tracking branch 'upstream/main' into SM_Sept21_PR
SMoorthi-emc Sep 27, 2021
f452fc5
after merging with ccpp/main
SMoorthi-emc Sep 27, 2021
bb59e96
fix typo in comments
SMoorthi-emc Sep 27, 2021
3618e66
updating to use estimated emissivity from the ice model when coupled
SMoorthi-emc Sep 28, 2021
78eb236
updating to include estimated emissivity from CICE
SMoorthi-emc Sep 28, 2021
4d33e71
fixing a bug in radiation_surface.f
SMoorthi-emc Sep 29, 2021
d09eb9c
fixing a bug in radiation_surface.f
SMoorthi-emc Sep 29, 2021
ecdb670
Merge remote-tracking branch 'upstream/main' into SM_Sept21_PR
SMoorthi-emc Sep 29, 2021
84956ba
Merge remote-tracking branch 'upstream/main' into SM_Sep142021
SMoorthi-emc Sep 29, 2021
7445eb0
making 'huge' a namelist variable
SMoorthi-emc Sep 30, 2021
4cdbcb0
Merge remote-tracking branch 'upstream/main' into SM_Sep142021
SMoorthi-emc Sep 30, 2021
d6f8ad4
Merge remote-tracking branch 'upstream/main' into SM_Sept21_PR
SMoorthi-emc Sep 30, 2021
19e675a
The ice/water flux composition is removed for consistency with the
tanyasmirnova Sep 30, 2021
6c709c9
Merge pull request #4 from tanyasmirnova/PR_moorthi_tanya_30sept21
SMoorthi-emc Sep 30, 2021
8ae21d6
Added updating of snow temperature and some clean-up.
tanyasmirnova Sep 30, 2021
dd89ac6
Merge pull request #6 from tanyasmirnova/PR_moorthi_ruclsm
SMoorthi-emc Sep 30, 2021
0fd3702
minor fix in sfc_drv_ruc.meta and removing some blanks in sfc_drv_ruc…
SMoorthi-emc Sep 30, 2021
76f0b35
changing ^ to & in radiation_surface.f
SMoorthi-emc Oct 1, 2021
9b2c6e6
after merging with main and updating radiation_surface to handle emis…
SMoorthi-emc Oct 4, 2021
b8a5bc0
fixing radiation_surface and GFS_surface_composite
SMoorthi-emc Oct 4, 2021
cbc9212
Merge branch 'SM_Sept21_PR' of https://github.com/SMoorthi-emc/ccpp-p…
SMoorthi-emc Oct 4, 2021
c1d781b
Merge remote-tracking branch 'upstream/main' into SM_Sept21_PR
SMoorthi-emc Oct 7, 2021
174f549
Merge remote-tracking branch 'upstream/main' into SM_Sep142021
SMoorthi-emc Oct 7, 2021
efd7e5a
Update documentation for input/output variables in radiation_surface.…
climbfuji Oct 8, 2021
85ffbb2
fixing some errors in radiation_surface and rearranging dcyc2.meta to…
SMoorthi-emc Oct 9, 2021
44d4974
Merge branch 'SM_Sep142021' of https://github.com/SMoorthi-emc/ccpp-p…
SMoorthi-emc Oct 9, 2021
e7dfdef
additional updates to emissivity calculation etc
SMoorthi-emc Oct 15, 2021
7c1b474
updating rte-rrtmgp pointer
SMoorthi-emc Oct 18, 2021
a6f1be8
Merge branch 'SM_Sept21_PR' into doc_update_moorthi_sep21
SMoorthi-emc Oct 19, 2021
daa52f9
Merge pull request #7 from climbfuji/doc_update_moorthi_sep21
SMoorthi-emc Oct 19, 2021
f6f3ce0
updating GFS_surface_composites to import sfcemis_wat
SMoorthi-emc Oct 19, 2021
42e7b97
fix a typo in GFS_radiation_surface.F90
SMoorthi-emc Oct 19, 2021
bc6a7c3
fix typo in GFS_surface_composites.meta
SMoorthi-emc Oct 19, 2021
3d4e056
replacing snodl by snodi in call to setalb
SMoorthi-emc Oct 20, 2021
6c0183e
updating comments in radiation_surface.f
SMoorthi-emc Oct 20, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions physics/GFS_radiation_surface.F90
Original file line number Diff line number Diff line change
Expand Up @@ -80,21 +80,23 @@ subroutine GFS_radiation_surface_run ( &

real(kind=kind_phys), dimension(:), intent(in) :: xlat, xlon, vtype, slmsk, &
sfc_alb_pert, lndp_prt_list, &
landfrac, lakefrac, &
landfrac, lakefrac, &
snowd, sncovr, &
sncovr_ice, fice, zorl, &
hprime, tsfg, tsfa, tisfc, &
coszen, alvsf, alnsf, alvwf, &
alnwf, facsf, facwf, &
semis_lnd, semis_ice, snoalb
alnwf, facsf, facwf, snoalb
character(len=3) , dimension(:), intent(in) :: lndp_var_list
real(kind=kind_phys), dimension(:), intent(inout) :: albdvis_lnd, albdnir_lnd, &
albivis_lnd, albinir_lnd
real(kind=kind_phys), dimension(:), intent(in) :: albdvis_ice, albdnir_ice, &
albivis_ice, albinir_ice

real(kind=kind_phys), dimension(:), intent(inout) :: albdvis_lnd, albdnir_lnd, &
albivis_lnd, albinir_lnd, &
semis_lnd, semis_ice
real(kind=kind_phys), dimension(:), intent(inout) :: semisbase, semis
real(kind=kind_phys), dimension(:,:), intent(inout) :: sfcalb
real(kind=kind_phys), dimension(:), intent(inout) :: sfc_alb_dif

character(len=*), intent(out) :: errmsg
integer, intent(out) :: errflg

Expand Down
18 changes: 2 additions & 16 deletions physics/GFS_surface_composites.F90
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm
tprcp_lnd, tprcp_ice, uustar, uustar_wat, uustar_lnd, uustar_ice, &
weasd, weasd_lnd, weasd_ice, ep1d_ice, tsfc, tsfco, tsfcl, tsfc_wat, &
tsfc_ice, tisfc, tsurf_wat, tsurf_lnd, tsurf_ice, &
gflx_ice, tgice, islmsk, islmsk_cice, slmsk, semis_rad, semis_wat, semis_lnd, semis_ice, &
emis_lnd, emis_ice, qss, qss_wat, qss_lnd, qss_ice, &
gflx_ice, tgice, islmsk, islmsk_cice, slmsk, semis_wat, semis_lnd, semis_ice, &
qss, qss_wat, qss_lnd, qss_ice, &
min_lakeice, min_seaice, kdt, errmsg, errflg)

implicit none
Expand All @@ -58,9 +58,7 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm
qss_wat, qss_lnd, qss_ice, ep1d_ice, gflx_ice
real(kind=kind_phys), intent(in ) :: tgice
integer, dimension(:), intent(inout) :: islmsk, islmsk_cice
real(kind=kind_phys), dimension(:), intent(in ) :: semis_rad
real(kind=kind_phys), dimension(:), intent(inout) :: semis_wat, semis_lnd, semis_ice, slmsk
real(kind=kind_phys), dimension(:), intent(inout) :: emis_lnd, emis_ice
real(kind=kind_phys), intent(in ) :: min_lakeice, min_seaice
!
real(kind=kind_phys), dimension(:), intent(inout) :: zorlo, zorll, zorli
Expand Down Expand Up @@ -229,12 +227,6 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm
uustar_lnd(i) = uustar(i)
weasd_lnd(i) = weasd(i)
tsurf_lnd(i) = tsfcl(i)
if (iemsflg == 2 .and. .not. flag_init) then
!-- use land emissivity from the LSM
semis_lnd(i) = emis_lnd(i)
else
semis_lnd(i) = semis_rad(i)
endif
! DH*
else
zorll(i) = huge
Expand All @@ -249,12 +241,6 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, lsm
tsurf_ice(i) = tisfc(i)
ep1d_ice(i) = zero
gflx_ice(i) = zero
if (iemsflg == 2 .and. (.not.flag_init .or. flag_restart) .and. lsm == lsm_ruc) then
!-- use emis_ice from RUC LSM with snow effect
semis_ice(i) = emis_ice(i)
else
semis_ice(i) = 0.95_kind_phys
endif
! DH*
else
zorli(i) = huge
Expand Down
37 changes: 5 additions & 32 deletions physics/GFS_surface_composites.meta
Original file line number Diff line number Diff line change
Expand Up @@ -492,15 +492,6 @@
kind = kind_phys
intent = inout
optional = F
[semis_rad]
standard_name = surface_longwave_emissivity
long_name = surface lw emissivity in fraction
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = in
optional = F
[semis_wat]
standard_name = surface_longwave_emissivity_over_water
long_name = surface lw emissivity in fraction over water
Expand All @@ -511,24 +502,6 @@
intent = inout
optional = F
[semis_lnd]
standard_name = surface_longwave_emissivity_over_land_interstitial
long_name = surface lw emissivity in fraction over land (temporary use as interstitial)
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
optional = F
[semis_ice]
standard_name = surface_longwave_emissivity_over_ice_interstitial
long_name = surface lw emissivity in fraction over ice (temporary use as interstitial)
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
optional = F
[emis_lnd]
standard_name = surface_longwave_emissivity_over_land
long_name = surface lw emissivity in fraction over land
units = frac
Expand All @@ -537,7 +510,7 @@
kind = kind_phys
intent = inout
optional = F
[emis_ice]
[semis_ice]
standard_name = surface_longwave_emissivity_over_ice
long_name = surface lw emissivity in fraction over ice
units = frac
Expand Down Expand Up @@ -678,17 +651,17 @@
intent = in
optional = F
[semis_lnd]
standard_name = surface_longwave_emissivity_over_land_interstitial
long_name = surface lw emissivity in fraction over land (temporary use as interstitial)
standard_name = surface_longwave_emissivity_over_land
long_name = surface lw emissivity in fraction over land
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = in
optional = F
[semis_ice]
standard_name = surface_longwave_emissivity_over_ice_interstitial
long_name = surface lw emissivity in fraction over ice (temporary use as interstitial)
standard_name = surface_longwave_emissivity_over_ice
long_name = surface lw emissivity in fraction over ice
units = frac
dimensions = (horizontal_loop_extent)
type = real
Expand Down
8 changes: 4 additions & 4 deletions physics/dcyc2.meta
Original file line number Diff line number Diff line change
Expand Up @@ -170,17 +170,17 @@
intent = in
optional = F
[sfcemis_lnd]
standard_name = surface_longwave_emissivity_over_land_interstitial
long_name = surface lw emissivity in fraction over land (temporary use as interstitial)
standard_name = surface_longwave_emissivity_over_land
long_name = surface lw emissivity in fraction over land
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = in
optional = F
[sfcemis_ice]
standard_name = surface_longwave_emissivity_over_ice_interstitial
long_name = surface lw emissivity in fraction over ice (temporary use as interstitial)
standard_name = surface_longwave_emissivity_over_ice
long_name = surface lw emissivity in fraction over ice
units = frac
dimensions = (horizontal_loop_extent)
type = real
Expand Down
51 changes: 40 additions & 11 deletions physics/radiation_surface.f
Original file line number Diff line number Diff line change
Expand Up @@ -334,8 +334,7 @@ end subroutine sfc_init
subroutine setalb &
& ( slmsk,lsm,lsm_noahmp,lsm_ruc,use_cice_alb,snowf, & ! --- inputs:
& sncovr,sncovr_ice,snoalb,zorlf,coszf, &
& tsknf,tairf,hprif,frac_grid, lakefrac, &
! & tsknf,tairf,hprif,frac_grid,min_seaice, &
& tsknf,tairf,hprif,frac_grid, lakefrac, &
& alvsf,alnsf,alvwf,alnwf,facsf,facwf,fice,tisfc, &
& lsmalbdvis, lsmalbdnir, lsmalbivis, lsmalbinir, &
& icealbdvis, icealbdnir, icealbivis, icealbinir, &
Expand Down Expand Up @@ -416,7 +415,6 @@ subroutine setalb &
& icealbdvis, icealbdnir, icealbivis, icealbinir, &
& sncovr, sncovr_ice, snoalb, albPpert ! sfc-perts, mgehne
real (kind=kind_phys), intent(in) :: pertalb ! sfc-perts, mgehne
! real (kind=kind_phys), intent(in) :: min_seaice
real (kind=kind_phys), dimension(:), intent(in) :: &
& fracl, fraco, fraci
real (kind=kind_phys), dimension(:),intent(inout) :: &
Expand Down Expand Up @@ -728,7 +726,6 @@ end subroutine setalb
subroutine setemis &
& ( lsm,lsm_noahmp,lsm_ruc,vtype,frac_grid, & ! --- inputs:
& xlon,xlat,slmsk,snowf,sncovr,sncovr_ice, &
! & min_seaice,xlon,xlat,slmsk,snowf,sncovr,sncovr_ice, &
& zorlf,tsknf,tairf,hprif, &
& semis_lnd,semis_ice,IMAX,fracl,fraco,fraci,icy, &
& semisbase, sfcemis & ! --- outputs:
Expand Down Expand Up @@ -785,13 +782,14 @@ subroutine setemis &
integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc
logical, intent(in) :: frac_grid
real (kind=kind_phys), dimension(:), intent(in) :: vtype
! real (kind=kind_phys), intent(in) :: min_seaice

real (kind=kind_phys), dimension(:), intent(in) :: &
& xlon,xlat, slmsk, snowf,sncovr, sncovr_ice, &
& zorlf, tsknf, tairf, hprif, semis_lnd, semis_ice
& zorlf, tsknf, tairf, hprif
real (kind=kind_phys), dimension(:), intent(in) :: &
& fracl, fraco, fraci
real (kind=kind_phys), dimension(:), intent(inout) :: &
& semis_lnd, semis_ice
logical, dimension(:), intent(in) :: &
& icy

Expand Down Expand Up @@ -829,6 +827,7 @@ subroutine setemis &

lab_do_IMAX : do i = 1, IMAX

semis_ice(i) = emsref(7)
if (fracl(i) < epsln) then ! no land
if ( abs(fraco(i)-f_one) < epsln ) then ! open water point
sfcemis(i) = emsref(1)
Expand Down Expand Up @@ -875,10 +874,11 @@ subroutine setemis &
if (abs(fracl(i)-f_one) < epsln) then
sfcemis(i) = emsref(idx)
else
sfcemis(i) = fracl(i)*emsref(idx) + fraco(i)*emsref(1) &
& + fraci(i)*emsref(7)
sfcemis(i) = fracl(i)*emsref(idx) + fraco(i)*emsref(1) &
& + fraci(i)*emsref(7)
endif
semisbase(i) = sfcemis(i)
semis_lnd(i) = emsref(idx)

endif ! end if_slmsk_block

Expand All @@ -887,16 +887,39 @@ subroutine setemis &

fsno = sncovr(i)
sfcemis(i) = sfcemis(i)*(f_one - fsno) + emsref(8)*fsno
if (fracl(i) > f_zero) then
if (fracl(i) <= fsno) then
semis_lnd(i) = emsref(8)
else
tmp1 = (fracl(i)-fsno) / fracl(i)
semis_lnd(i) = semis_lnd(i) * tmp1 + (f_one-tmp1)*fsno
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this line has a bug: there is no snow emissivity in the second term on the right side.

endif
endif
if (fraci(i) > f_zero) then
semis_ice(i) = emsref(8)
endif

else ! compute snow cover from snow depth
if ( snowf(i) > f_zero ) then
if (abs(fraco(i)-f_one) > epsln .and. &
& snowf(i) > f_zero) then
asnow = 0.02*snowf(i)
argh = min(0.50, max(.025, 0.01*zorlf(i)))
hrgh = min(f_one, max(0.20, 1.0577-1.1538e-3*hprif(i) ) )
fsno = asnow / (argh + asnow) * hrgh

if (abs(fraco(i)-f_one) < epsln) fsno = f_zero ! no snow over open water
sfcemis(i) = sfcemis(i)*(f_one - fsno) + emsref(8)*fsno

if (fracl(i) > f_zero) then
if (fracl(i) <= fsno) then
semis_lnd(i) = emsref(8)
else
tmp1 = (fracl(i)-fsno) / fracl(i)
semis_lnd(i) = semis_lnd(i)*tmp1 + (f_one-tmp1)*fsno
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same bug here

endif
endif
if (fraci(i) > f_zero) then
semis_ice(i) = emsref(8)
endif
endif

endif ! end if_ialbflg
Expand All @@ -918,8 +941,14 @@ subroutine setemis &
argh = min(0.50, max(.025,0.01*zorlf(i)))
hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i)))
fsno = asnow / (argh + asnow) * hrgh
sfcemis_ice = sfcemis_ice*(f_one-fsno)+emsref(8)*fsno
if (fraci(i) > fsno) then
tmp1 = (fraci(i) - fsno) / fraci(i)
sfcemis_ice = sfcemis_ice*tmp1+emsref(8)*(f_one-tmp1)
else
sfcemis_ice = emsref(8)
endif
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SMoorthi-emc I don't understand why this change is needed. The fsno is a snow cover fraction on ice, thus, emissivity of ice with partial snow cover will be sfcemis_ice*(f_one-fsno)+emsref(8)*fsno. This formulation was in the original code.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tanya,
The original code had
" sfcemis_ice = sfcemis_ice*(f_one-fsno)+emsref(8)*fsno"
This assumes that ice fraction is one. This need not be the case with a fractional grid.
If it is a fractional grid, then ice fraction is going to be less than one (this can be true even if there is no land).
What I did is not perfect, but if the snow fraction is less than ice fraction I do the weighted average; if snow fraction is larger than ice fraction, then I assume all ice is covered by snow.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moorthi, I see now that you are taking care of fractional sea ice. But actually in this part of the code when iemslw=2, the final composition is happening in the last line of the loop:
962 sfcemis(i) = fracl(i)*sfcemis_land + fraco(i)*emsref(1) &
963 & + fraci(i)*sfcemis_ice

Therefore, with the change you made fractional sea ice will be taken into account twice.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it is only computing mean value over ice.
The lone
" sfcemis(i) = fracl(i)*sfcemis_land + fraco(i)*emsref(1) &
& + fraci(i)*sfcemis_ice"
does the weight for all three components (land, water and ice)
We could potentially remove local variables, but fo rnow I will not do it.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the original code had a bug. It assumed ice fraction as one in calculating sfcemis_ice.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SMoorthi-emc @climbfuji @barlage @yangfanglin
Original radiation_surface.f was not accounting for fractional grid, neither was the sfc_sice.f. With the fractional grid sfc_sice.f should provide sncovr_ice(i) and snwdpth_ice(i) as it is solving energy budget (accumulating/melting snow) over the ice fraction of the grid cell. Similarly, if coupled to CICE, it should provide these variables or computed in CICE semis_ice(i).
RUC LSM has its own treatment of sea ice in case of uncoupled to CICE model only, thus, it computes emissivity over ice internally and it is used in radiation_surface.f. RUC LSM also provides sncovr_ice(i) and snwdpth_ice(i). When CICE is coupled to the model, the radiation_surface.f should use semis_ice, or sncover_ice and snwdpth_ice from CICE.
Noah or Noah MP models do not have the sea ice modules, therefore, with these LSMs snow depths and snow cover fractions over ice should be provided by sfc_sice.f or CICE, which is not done yet. I think this PR is a good time to make it work consistently for all scenarios.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When coupled to CICE, CICE provides upward log wave radiation not emissivity.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there is a potential issue that I am trying to think how to fix.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The issue I alluded to above is related to emissivity over sea_ice model CICE6. We import upward longwave radiation from CICE6. Unfortunately, there is some inconsistency in the current coupled model. So, what I did yesterday and today is to remove this inconsistency by defining an estimated "emis_ice" over seaice from the imported upward longwave and ice skin temperature from the ice model. I had to make appropriate changes in the radiation_surface code so that it used this emissivity for sea-ice when the model is coupled. Unfortunately, I had to remove the variable "tice" from "lsm_ruc_run" as this variable and "tskin_ice" are the same and I could not define the same name for two variables in the same meta file (I sent an email to Tanya about this, but haven't heard back yet).
Anyway, my repository has been updated it is what it is under the circumstances.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SMoorthi-emc I agree with your removal of tice, thank you! Also, I think your solution for emissivity from CICE6 makes sense.

endif
semis_ice(i) = sfcemis_ice
elseif (lsm == lsm_ruc) then
sfcemis_ice = semis_ice(i) ! output from lsm (with snow effect)
endif ! lsm check
Expand Down
9 changes: 5 additions & 4 deletions physics/rascnv.F90
Original file line number Diff line number Diff line change
Expand Up @@ -353,11 +353,11 @@ subroutine rascnv_run(IM, k, itc, ntc, ntr, dt, dtf &
&, cnv_dqldt, clcn &
&, cnv_fice, cnv_ndrop &
&, cnv_nice, cf_upi
real(kind=kind_phys), dimension(:) , intent(in) :: area, cdrag
real(kind=kind_phys), dimension(:) , intent(in) :: area, cdrag
real(kind=kind_phys), dimension(:) , intent(out) :: rainc, ddvel
real(kind=kind_phys), dimension(:,:), intent(in) :: rannum
real(kind=kind_phys), dimension(:,:), intent(in) :: rannum
real(kind=kind_phys), intent(inout) :: ccin(:,:,:)
real(kind=kind_phys), intent(in) :: dt, dtf
real(kind=kind_phys), intent(in) :: dt, dtf
!
! Added for aerosol scavenging for GOCART
!
Expand All @@ -373,7 +373,8 @@ subroutine rascnv_run(IM, k, itc, ntc, ntr, dt, dtf &
real(kind=kind_phys), dimension(k) :: toi, qoi, tcu, qcu &
&, pcu, clw, cli, qii, qli&
&, phi_l, prsm,psjm &
&, alfinq, alfind, rhc_l &
&, alfind, rhc_l &
! &, alfinq, alfind, rhc_l &
&, qoi_l, qli_l, qii_l
real(kind=kind_phys), dimension(k+1) :: prs, psj, phi_h, flx, flxd

Expand Down
6 changes: 3 additions & 3 deletions physics/sfc_drv.meta
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,8 @@
intent = in
optional = F
[sfcemis]
standard_name = surface_longwave_emissivity_over_land_interstitial
long_name = surface lw emissivity in fraction over land (temporary use as interstitial)
standard_name = surface_longwave_emissivity_over_land
long_name = surface lw emissivity in fraction over land
units = frac
dimensions = (horizontal_loop_extent)
type = real
Expand Down Expand Up @@ -646,7 +646,7 @@
optional = F
[zorl]
standard_name = surface_roughness_length_over_land
long_name = surface roughness length over land (temporary use as interstitial)
long_name = surface roughness length over land
units = cm
dimensions = (horizontal_loop_extent)
type = real
Expand Down
6 changes: 3 additions & 3 deletions physics/sfc_noah_wrfv4.meta
Original file line number Diff line number Diff line change
Expand Up @@ -403,16 +403,16 @@
optional = F
[z0k]
standard_name = surface_roughness_length_over_land
long_name = surface roughness length over land (temporary use as interstitial)
long_name = surface roughness length over land
units = m
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
optional = F
[emissi]
standard_name = surface_longwave_emissivity_over_land_interstitial
long_name = surface lw emissivity in fraction over land (temporary use as interstitial)
standard_name = surface_longwave_emissivity_over_land
long_name = surface lw emissivity in fraction over land
units = frac
dimensions = (horizontal_loop_extent)
type = real
Expand Down
4 changes: 2 additions & 2 deletions physics/sfc_sice.meta
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,8 @@
intent = in
optional = F
[sfcemis]
standard_name = surface_longwave_emissivity_over_ice_interstitial
long_name = surface lw emissivity in fraction over ice (temporary use as interstitial)
standard_name = surface_longwave_emissivity_over_ice
long_name = surface lw emissivity in fraction over ice
units = frac
dimensions = (horizontal_loop_extent)
type = real
Expand Down
14 changes: 7 additions & 7 deletions physics/sfcsub.F
Original file line number Diff line number Diff line change
Expand Up @@ -2019,14 +2019,14 @@ subroutine sfccycle(lugb,len,lsoil,sig1t,deltsfc &
! *,' tsffcs=',tsffcs(iprnt),' slianl=',slianl(iprnt)

do i=1,len
if (nint(slmskl(i)) /= 1) then
if (sicanl(i) >= min_ice(i)) then
slianl(i) = 2.0_kind_io8
else
slianl(i) = zero
sicanl(i) = zero
if (nint(slmskl(i)) /= 1) then
if (sicanl(i) >= min_ice(i)) then
slianl(i) = 2.0_kind_io8
else
slianl(i) = zero
sicanl(i) = zero
endif
endif
endif
enddo

if (fh-deltsfc > -0.001 ) then
Expand Down