!------------------------------------------------------------------------------- ! Get the probability for 1D Classifiers !------------------------------------------------------------------------------- Subroutine get_prob_1d (x, satzen, solzen, lunzen, solglintzen, lunglintzen,& solscatang, zsfc, snow_class, coast_mask, isfc, lut, & clear_cond_ratio, water_cond_ratio, ice_cond_ratio, & obs_prob) REAL(Kind = real4), intent(in) :: x, satzen, solzen, lunzen, & REAL(Kind = real4), intent(in) :: solglintzen, lunglintzen, REAL(KIND = real4 ), intent(in) :: solscatang, missing_value INTEGER(KIND = int4), intent(in) :: zsfc, snow_class, coast_mask, isfc type(Classifier), intent(in) :: lut, missing_value REAL(KIND=real4), intent(out) :: clear_cond_ratio, water_cond_ratio, & ice_cond_ratio, obs_prob !initialize variables clear_cond_ratio = missing_value water_cond_ratio = missing_value ice_cond_ratio = missing_value obs_prob = missing_value !-- check for data that is withing the limits for this classifier if ((satzen /= missing_value) .AND. & ((satzen < lut[isfc]%attrs%zen_min) .OR.& (solzen > lut[isfc]%attrs%zen_max))) RETURN if ((solzen /= missing_value) .AND. & ((solzen < lut[isfc]%attrs%solzen_min) .OR. & (solzen > lut[isfc]%attrs%solzen_max))) RETURN if ((solglintzen /= missing_value) .AND. & ((solglintzen < lut[isfc]%attrs%solglintzen_min) .OR. & (solglintzen > lut[isfc]%attrs%solglintzen_max))) RETURN if ((lunglintzen /= missing_value) .AND. & ((lunglintzen < lut[isfc]%attrs%lunglintzen_min) .OR. & (lunglintzen > lut[isfc]%attrs%lunglintzen_max))) RETURN if ((solscatang /= missing_value) .AND. & ((solscatang < lut[isfc]%attrs%solscatang_min) .OR. & (solscatang > lut[isfc]%attrs%solscatang_max))) RETURN if ((zsfc < lut[isfc]%attrs%zsfc_min) .OR. & (zsfc > lut[isfc]%attrs%zsfc_max)) RETURN if ((snow_class < lut[isfc]%attrs%snow_class_min) .OR. & (snow_class > lut[isfc]%attrs%snow_class_max)) RETURN if ((coast_mask < lut[isfc]%attrs%coast_mask_min) .OR. & (coast_mask > lut[isfc]%attrs%coast_mask_max)) RETURN !--- check for valid data if (x == missing_value) RETURN !determine probability ix = min([lut[isfc]%attrs%nbins_x - 1 , max([0,INT((x -& lut[isfc]%attrs%x_min) / & lut[isfc]%attrs%x_bin)])]) obs_prob = lut[isfc]%obs[ix] if (obs_prob > 0.0) then begin clear_cond_ratio = lut[isfc]%clear[ix] ice_cond_ratio = lut[isfc]%ice[ix] water_cond_ratio = lut[isfc]%water[ix] endif RETURN end Subroutine