Skip to content
Merged
Show file tree
Hide file tree
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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- Added functionality for model-based QC of MODIS SCF observations using soil layer 1 temperature.
- Added functionality to simulate landice tiles.
- Added functionality to read nc4-formatted tile file.

Expand Down
56 changes: 49 additions & 7 deletions GEOSlandassim_GridComp/clsm_ensupd_upd_routines.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1213,8 +1213,9 @@ subroutine get_obs_pred( &

case('asnow')

get_asnow_l = .true.
get_asnow_lH = .true.
get_asnow_l = .true.
get_asnow_lH = .true.
get_tp_l = .true. ! needed for model-based QC

case default

Expand Down Expand Up @@ -1365,7 +1366,7 @@ subroutine get_obs_pred( &

! updated to new interface - reichle, 3 Apr 2012

call catch_calc_tp( N_catl, cat_param%poros, &
call catch_calc_tp( N_catl, cat_param%poros, &
catprogn2ghtcnt(N_catl,cat_progn(:,n_e)), tp_l )

end if
Expand Down Expand Up @@ -1461,9 +1462,12 @@ subroutine get_obs_pred( &
call qc_model_based_for_Tb( N_catl, precip, Tb_v_l(:,j,n_e) )

end do

end if

if (get_asnow_lH) &
call qc_model_based_for_asnow( N_catl, tp_l(1,:), asnow_l(:,n_e) )

end if

end do ! loop through ens members
Expand Down Expand Up @@ -2254,7 +2258,7 @@ subroutine qc_model_based_for_sat_sfmc( N_cat, precip, SWE, tsurf, &

do i=1,N_cat

! delete obs
! delete Obs_pred
! - if there is snow on the ground
! - if it is raining/snowing
! - if surface temperature is around or below freezing
Expand Down Expand Up @@ -2337,7 +2341,7 @@ subroutine qc_model_based_for_sat_tsurf( N_cat, precip, SWE, tp1, &

do i=1,N_cat

! delete obs
! delete Obs_pred
! - if there is snow on the ground
! - if it is raining/snowing
! - if "avoid_frozen" and frozen
Expand Down Expand Up @@ -2391,7 +2395,7 @@ subroutine qc_model_based_for_Tb( N_cat, precip, Tb )

do i=1,N_cat

! delete obs
! delete Obs_pred
! - if there is heavy rain or snow

! NOTE: subroutine mwRTM_get_Tb already returns no-data-values
Expand All @@ -2412,6 +2416,44 @@ subroutine qc_model_based_for_Tb( N_cat, precip, Tb )
end do

end subroutine qc_model_based_for_Tb

! *****************************************************************

subroutine qc_model_based_for_asnow( N_cat, tp1, asnow )

! Model-based quality control for MODIS SCF observations.
! Sets "asnow" to no-data when layer-1 soil temperature exceeds a threshold.
!
! amfox, 7 May 2025
!
! --------------------------------------------------------------

implicit none

integer, intent(in) :: N_cat

real, dimension(N_cat), intent(in) :: tp1 ! layer-1 soil temperature [C]

real, dimension(N_cat), intent(inout) :: asnow ! snow cover fraction [0-1]

! local variables

real, parameter :: temperature_threshold = 10. ! [C]

integer :: i

! ---------------------------------------

do i=1,N_cat

! delete Obs_pred
! - if the layer-1 soil temperature exceeds threshold

if (tp1(i) > temperature_threshold) asnow(i) = nodata_generic

end do

end subroutine qc_model_based_for_asnow

! *********************************************************************

Expand Down
Loading