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

A version to compute emissivity for different scenarios with fractional grid in coupled/uncoupled models #5

Open
wants to merge 2 commits into
base: SM_Sept21_PR
Choose a base branch
from
Open
Changes from all commits
Commits
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
33 changes: 15 additions & 18 deletions physics/radiation_surface.f
Original file line number Diff line number Diff line change
Expand Up @@ -956,26 +956,23 @@ subroutine setemis &
if ( icy(i) ) then !-- ice emissivity

!-- complete or fractional ice
if (lsm == lsm_noahmp) then
if (.not. cplice .or. lakefrac(i) > f_zero) then
if (sncovr_ice(i) > f_zero) then
sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) &
if (cplice .or. lsm == lsm_ruc) then
sfcemis_ice = semis_ice(i) ! output from RUC lsm or CICE (with snow effect)
else
!-- compute ice emissivity with snow effect for uncoupled lake or sea ice
if (sncovr_ice(i) > f_zero) then
sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) &
& + emsref(8) * sncovr_ice(i)
elseif (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
fsnoi = min(f_one, fsno / (fraci(i)+fracl(i)))
sfcemis_ice = emsref(7)*(f_one-fsnoi) + emsref(8)*fsnoi
endif
semis_ice(i) = sfcemis_ice
else
sfcemis_ice = semis_ice(i) ! output from CICE
elseif (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
fsnoi = min(f_one, fsno / (fraci(i)+fracl(i)))
sfcemis_ice = emsref(7)*(f_one-fsnoi) + emsref(8)*fsnoi
Copy link
Owner

Choose a reason for hiding this comment

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

Tanya,
There is one problem here. Note that in my version I save "sfcemis_ice" into semis_ice(i), as it is needed elsewhere. When we do this, it could potentially go through a different path in the above "if" loop when it is called another time.
Moorthi

Copy link
Author

Choose a reason for hiding this comment

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

Moorthi,
I have changed the if statement to use semis_ice(i) with RUC lsm and CICE (for now other ice schemes or lake models do not provide semis_ice), and compute it in all other scenarios. Will this work now?

Copy link
Owner

Choose a reason for hiding this comment

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

Tanya,
It won't work. I think my original version is fine. The reason it won't work is because, when it is coupled to CICE6, it only takes care of sea-ice, not lake ice. That is the reason I was adding "lakefrac" in the logic so that if it is coupled and not RUClsm, then to compute emissivity for the lake ice the default way.
Moorthi

Copy link
Author

Choose a reason for hiding this comment

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

Ok, let's go with your version. Thank you for merging RUC LSM clean-up version into your PR.

Copy link
Author

Choose a reason for hiding this comment

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

@SMoorthi-emc I forgot to tell you that one thing will not work in your version with RUC LSM. The RUC ice model is turned on for ice on the ocean and lakes only when uncoupled from CICE or the lake model. Thus, if coupled to the lake model semis_ice(i) is not defined unless it is computed in the lake model (I think it is not the case for Flake). Therefore, with RUC LSM the "standard" method to compute semis_ice from snow depth should be applied it the lake model is turned on.

Copy link
Owner

Choose a reason for hiding this comment

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

Tanya,
If the model is coupled to CICE6, then with RUC LSM, the emissivity from CICE6 used? In this case, if "flake" is called for lake, then RUC LSM does not update emissivity right? If no lake model is used, the RUC LSM will calculate lake ice emissivity. If this is the case, I think I need to update the code (for now assuming that "flake" does not update ice emissivity)

Copy link
Author

Choose a reason for hiding this comment

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

Moorthi, Yes to both questions. And yes, RUC LSM will calculate lake ice emissivity only if no lake model is used. Thank you!

endif
elseif (lsm == lsm_ruc) then
sfcemis_ice = semis_ice(i) ! output from lsm (with snow effect)
endif ! lsm check
semis_ice(i) = sfcemis_ice
endif
endif ! icy

!-- land emissivity
Expand Down