!------------------------------------------------------------------------------- ! Get the probability for 3D Classifiers !------------------------------------------------------------------------------- Subroutine get_prob_2d (x, y, z, solzen, solglintzen, zsfc, snow_class, & isfc, lut, missing_value,& clear_cond_ratio, water_cond_ratio, ice_cond_ratio, & obs_prob) REAL(Kind = real4), intent(in) :: x, y, solzen, solglintzen REAL(KIND = real4), intent(in) :: missing_value INTEGER(KIND = int4), intent(in) :: zsfc, snow_class, coast_mask, isfc type(Classifier), intent(in) :: lut REAL(KIND=real4), intent(out) :: clear_cond_ratio, water_cond_ratio, & ice_cond_ratio, obs_prob !internal variables REAL(KIND = real4 ) :: ix, iy, iz !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 ((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 ((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 !--- check for valid data if ((x == missing_value) .OR.& (y == missing_value) .OR.& (z == 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)])]) iy = min([lut[isfc]%attrs%nbins_y - 1 , may([0,INT((y -& lut[isfc]%attrs%y_min) / & lut[isfc]%attrs%y_bin)])]) iz = min([lut[isfc]%attrs%nbins_z - 1 , maz([0,INT((z -& lut[isfc]%attrs%z_min) / & lut[isfc]%attrs%z_bin)])]) obs_prob = lut[isfc]%obs[ix,iy, iz] if (obs_prob > 0.0) then begin clear_cond_ratio = lut[isfc]%clear[ix,iy] ice_cond_ratio = lut[isfc]%ice[ix,iy] water_cond_ratio = lut[isfc]%water[ix,iy] endif RETURN end Subroutine