SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/flag_gr_snow.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE FLAG_GR_SNOW(KFLAG,OMASK,TPSNOW)  
00003 !     ##########################################################
00004 !
00005 !!****  *FLAG_GR_SNOW* - routine to flag snow surface fields
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !       Initialize snow surface fields.
00010 !
00011 !!**  METHOD
00012 !!    ------
00013 !!    
00014 !!    
00015 !!
00016 !!    EXTERNAL
00017 !!    --------
00018 !!      
00019 !!       
00020 !!    IMPLICIT ARGUMENTS
00021 !!    ------------------ 
00022 !!
00023 !!    REFERENCE
00024 !!    ---------
00025 !!      
00026 !!      
00027 !!
00028 !!    AUTHOR
00029 !!    ------
00030 !!      V. Masson       * Meteo France *
00031 !!
00032 !!    MODIFICATIONS
00033 !!    -------------
00034 !!      Original       10/2011
00035 !-----------------------------------------------------------------------------
00036 !
00037 !*       0.    DECLARATIONS
00038 !
00039 USE MODD_TYPE_SNOW
00040 !
00041 !
00042 USE MODD_SURF_PAR, ONLY : XUNDEF
00043 !
00044 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00045 USE PARKIND1  ,ONLY : JPRB
00046 !
00047 IMPLICIT NONE
00048 !
00049 !*       0.1   declarations of arguments
00050 !
00051 INTEGER, INTENT(IN) :: KFLAG ! 1 : to put physical values to run ISBA afterwards
00052 !                            ! 2 : to flag with XUNDEF value for points wihtout
00053 LOGICAL, DIMENSION(:), INTENT(IN) :: OMASK ! T: points where snow values 
00054 !                                          !    must be flagged
00055 TYPE(SURF_SNOW), INTENT(INOUT) :: TPSNOW   ! snow characteristics
00056 !
00057 !*       0.2   declarations of local variables
00058 !
00059 REAL            :: ZVAL
00060 INTEGER         :: JLAYER, JPATCH
00061 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00062 !-------------------------------------------------------------------------------
00063 IF (LHOOK) CALL DR_HOOK('FLAG_GR_SNOW',0,ZHOOK_HANDLE)
00064 !
00065 IF (KFLAG==1) THEN
00066   ZVAL = 0.
00067 ELSEIF (KFLAG==2) THEN 
00068   ZVAL = XUNDEF
00069 ENDIF
00070 !
00071 DO JPATCH = 1,SIZE(TPSNOW%WSNOW,3)
00072   !
00073   DO JLAYER = 1,TPSNOW%NLAYER
00074     !
00075     WHERE(OMASK(:)) TPSNOW%WSNOW(:,JLAYER,JPATCH) = ZVAL
00076     !
00077     IF (KFLAG==1) THEN 
00078       !
00079       WHERE(OMASK(:)) TPSNOW%RHO  (:,JLAYER,JPATCH) = XUNDEF
00080       !
00081       IF (SIZE(TPSNOW%TEMP ) >0) THEN
00082         WHERE(OMASK(:)) 
00083           TPSNOW%TEMP (:,JLAYER,JPATCH) = XUNDEF
00084           TPSNOW%HEAT (:,JLAYER,JPATCH) = XUNDEF
00085         END WHERE
00086       ENDIF
00087       !
00088       IF (SIZE(TPSNOW%T    ) >0) WHERE(OMASK(:)) TPSNOW%T(:,JLAYER,JPATCH) = XUNDEF
00089       !
00090       IF (SIZE(TPSNOW%GRAN1) >0) THEN
00091         WHERE(OMASK(:)) 
00092           TPSNOW%GRAN1(:,JLAYER,JPATCH) = XUNDEF
00093           TPSNOW%GRAN2(:,JLAYER,JPATCH) = XUNDEF
00094           TPSNOW%HIST (:,JLAYER,JPATCH) = XUNDEF
00095           TPSNOW%AGE  (:,JLAYER,JPATCH) = XUNDEF
00096         END WHERE
00097       END IF
00098       !
00099     ENDIF
00100     !
00101   ENDDO
00102   !
00103   IF (KFLAG==1) THEN
00104     !
00105     WHERE(OMASK(:)) TPSNOW%ALB  (:,JPATCH) = XUNDEF
00106     !
00107     IF (SIZE(TPSNOW%EMIS ) >0) THEN
00108       WHERE(OMASK(:))
00109         TPSNOW%EMIS (:,JPATCH) = XUNDEF
00110         TPSNOW%TS   (:,JPATCH) = XUNDEF
00111       END WHERE
00112     END IF
00113     !
00114   ENDIF
00115   !
00116 END DO
00117 !
00118 IF (LHOOK) CALL DR_HOOK('FLAG_GR_SNOW',1,ZHOOK_HANDLE)
00119 !
00120 !-------------------------------------------------------------------------------
00121 !
00122 END SUBROUTINE FLAG_GR_SNOW