-
Notifications
You must be signed in to change notification settings - Fork 446
Parameterizations of fine-scale topographic effects on surface radiation balance in ELM #7813
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
base: master
Are you sure you want to change the base?
Parameterizations of fine-scale topographic effects on surface radiation balance in ELM #7813
Conversation
|
@daleihao do not merge master in to your feature branch. Undo that commit. |
a1efdde to
8e93106
Compare
Done. |
|
@daleihao, could you please try to rebase this PR off the latest master as there are few conflicts? thanks. |
| !write(iulog,*) 'cosinc_gcell',cosinc_gcell(g) | ||
| !write(iulog,*) 'coszen_gcell',coszen_gcell(g) |
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.
Please delete these lines
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.
Done.
| ! Cosine solar zenith angle for next time step | ||
|
|
||
| deg2rad = SHR_CONST_PI/180._r8 | ||
| do g = bounds%begg,bounds%endg |
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 believe it would be better to refactor the code such that the if (use_finetop_rad) is outside the do-loop as:
if (.not. use_finetop_rad) then
do g = bounds%begg,bounds%endg
coszen_gcell(g) = shr_orb_cosz (nextsw_cday, grc_pp%lat(g), grc_pp%lon(g), declinp1)
cosinc_gcell(g) = coszen_gcell(g)
enddo
else
do g = bounds%begg,bounds%endg
coszen_gcell(g) = shr_orb_cosz (nextsw_cday, grc_pp%lat(g), grc_pp%lon(g), declinp1)
...
enddo
enddoThere 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.
Done.
| sza(g) = nan | ||
| saa(g) = nan | ||
| cosinc(g) = nan |
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.
Initialize them to spval instead of nan.
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.
Done.
| allocate(this%f_short_dir (begg:endg)) ; this%f_short_dir (:) = nan | ||
| allocate(this%f_short_dif (begg:endg)) ; this%f_short_dif (:) = nan | ||
| allocate(this%f_short_refl (begg:endg,numrad)) ; this%f_short_refl (:,:) = nan | ||
| allocate(this%f_long_dif (begg:endg)) ; this%f_long_dif (:) = nan | ||
| allocate(this%f_long_refl (begg:endg)) ; this%f_long_refl (:) = nan | ||
| allocate(this%sza (begg:endg)) ; this%sza (:) = nan | ||
| allocate(this%saa (begg:endg)) ; this%saa (:) = nan | ||
| allocate(this%cosinc (begg:endg)) ; this%cosinc (:) = nan |
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.
set them to spval.
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.
Done.
| endif | ||
|
|
||
| if ( use_finetop_rad ) then |
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.
You can combine code to use a single if-conditional
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.
Done.
| if (use_top_solar_rad) then | ||
| write(iulog,*) ' use TOP solar radiation parameterization instead of PP' | ||
| else | ||
| write(iulog,*) ' use_top_solar_rad is False, so do not run TOP solar radiation parameterization' | ||
| end if | ||
|
|
||
|
|
||
| if (use_finetop_rad) then | ||
| write(iulog,*) ' use fineTOP radiation parameterization instead of PP' | ||
| else | ||
| write(iulog,*) ' use_finetop_rad is False, so do not run fineTOP radiation parameterization' | ||
| end if | ||
|
|
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.
Need to add a check that both use_top_solar_rad and use_finetop_rad can't be simultaneously true.
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.
Done.
diurnal_FSDS.mp4This movie shows the diurnal variation of solar radiation with/without fineTOP over the Sierra Nevada. |
debug & define cosinc_col add model outputs; & modify surface area correction for longwave radiation & debug correct surface area for thermal radiation for soilT module update snowsnicar_AD model change COSINC output name to avoid duplicate fix a small bug in variable name fix small bugs debug debug fix bugs set SZA<85 limit fix small bugs fix one bug and add initialization for few variables fix small bugs delete log output and add control to adjust albedo delete log output delete write output add more outputs like MODIS daytime and nighttime ST debug fix a small bug add MODIS FSNO output fix a bug clean up the code in biogeophys clean up the code in main clean up the code fix urban bug add code to calculate apparent surface albedo for EAM fix a small bug debug debug & modify code to not change for urban landunits debug fix typo debug consider the top effects on upward radaiton to sky debug Conflicts: components/elm/src/biogeophys/SoilFluxesMod.F90 components/elm/src/biogeophys/SurfaceAlbedoMod.F90 components/elm/src/main/atm2lndType.F90 components/elm/src/main/elm_initializeMod.F90 fix a LAI bug delete ; debug & add test add restart variables fix a bug debug debug restart issues remove log output
7de7a64 to
788aeab
Compare
fix a typo add error message fix a bug to avoid the initilization issue in the debug mode
788aeab to
093e6e4
Compare
Add physically-based and computationally-efficient parameterizations (fineTOP; Hao et al., 2025) in ELM to explicitly resolve fine-scale (e.g., 1 km) topographic effects on downward shortwave and longwave radiation as well as land surface radiative properties.
The new parameterization can be turned on by
use_finetop_rad = .true..A test for the new parameterization is added.
[BFB]
Hao, D., Bisht, G., Li, L., & Leung, L. R. (2025). Representing fine-scale topographic effects on surface radiation balance in hyper-resolution land surface models. Journal of Advances in Modeling Earth Systems, 17, e2025MS004987. https://doi.org/10.1029/2025MS004987
See an example movie below