-
Notifications
You must be signed in to change notification settings - Fork 146
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
Changes from 11 commits
1a77835
2cae156
3721df1
915ce6f
5f323e2
7748289
252313d
2c6f85a
7d169b3
12d85af
2dd3ce4
38a637e
70f84bd
8eae622
32af5e9
f506e4d
2dbfdbd
6a2cb7d
1d3e762
34aa8c8
e39d4e6
f7d4395
9e14237
c0b1f13
f452fc5
bb59e96
3618e66
78eb236
4d33e71
d09eb9c
ecdb670
84956ba
7445eb0
4cdbcb0
d6f8ad4
19e675a
6c709c9
8ae21d6
dd89ac6
0fd3702
76f0b35
9b2c6e6
b8a5bc0
cbc9212
c1d781b
174f549
efd7e5a
85ffbb2
44d4974
e7dfdef
7c1b474
a6f1be8
daa52f9
f6f3ce0
42e7b97
bc6a7c3
3d4e056
6c0183e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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, & | ||
|
@@ -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) :: & | ||
|
@@ -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: | ||
|
@@ -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 | ||
|
||
|
@@ -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) | ||
|
@@ -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 | ||
|
||
|
@@ -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 | ||
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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 | ||
|
@@ -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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Tanya, There was a problem hiding this comment. Choose a reason for hiding this commentThe 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: Therefore, with the change you made fractional sea ice will be taken into account twice. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No, it is only computing mean value over ice. There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @SMoorthi-emc @climbfuji @barlage @yangfanglin There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. When coupled to CICE, CICE provides upward log wave radiation not emissivity. There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. There was a problem hiding this comment. Choose a reason for hiding this commentThe 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). There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 | ||
|
There was a problem hiding this comment.
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.