SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/mkflag_snow.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE MKFLAG_SNOW(TPSNOW)
00003 !          ###################
00004 !
00005 !!****  *MKFLAG_SNOW* - puts undefined value on some snow quantities
00006 !!                      where snow is not present
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!    REFERENCE
00015 !!    ---------
00016 !!      
00017 !!
00018 !!    AUTHOR
00019 !!    ------
00020 !!     V. Masson 
00021 !!
00022 !!    MODIFICATIONS
00023 !!    -------------
00024 !!      Original    01/2004
00025 !!     A. Bogatchev 09/2005 EBA snow option
00026 !!     B. Decharme  01/2009 Limit snow mass if Density=undef
00027 !!------------------------------------------------------------------
00028 !
00029 USE MODD_TYPE_SNOW
00030 USE MODD_SURF_PAR,   ONLY : XUNDEF
00031 !
00032 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00033 USE PARKIND1  ,ONLY : JPRB
00034 !
00035 IMPLICIT NONE
00036 !
00037 TYPE(SURF_SNOW)  :: TPSNOW ! snow state vector
00038 !
00039 INTEGER :: JLAYER
00040 INTEGER :: JPATCH
00041 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00042 !
00043 !--------------------------------------------------
00044 !
00045 IF (LHOOK) CALL DR_HOOK('MKFLAG_SNOW',0,ZHOOK_HANDLE)
00046 IF (TPSNOW%SCHEME=='NON' .AND. LHOOK) CALL DR_HOOK('MKFLAG_SNOW',1,ZHOOK_HANDLE)
00047 IF (TPSNOW%SCHEME=='NON') RETURN
00048 !
00049 DO JPATCH =1,SIZE(TPSNOW%WSNOW,3)
00050 !
00051  IF (TPSNOW%SCHEME=='D95' .OR. TPSNOW%SCHEME=='EBA' .OR. TPSNOW%SCHEME=='1-L' .OR. TPSNOW%SCHEME=='3-L' &
00052           .OR. TPSNOW%SCHEME=='CRO') THEN  
00053   DO JLAYER=1,TPSNOW%NLAYER
00054     WHERE ( TPSNOW%RHO(:,1,JPATCH)== XUNDEF .AND. TPSNOW%WSNOW(:,JLAYER,JPATCH) > 0.0 .AND. TPSNOW%WSNOW(:,1,JPATCH)/= XUNDEF )
00055       TPSNOW%WSNOW(:,JLAYER,JPATCH) = 0.0
00056     END WHERE
00057   END DO
00058  END IF
00059 ! 
00060  IF (TPSNOW%SCHEME=='1-L') THEN
00061   DO JLAYER=1,TPSNOW%NLAYER
00062     WHERE ( TPSNOW%WSNOW(:,1,JPATCH)==0. .OR. TPSNOW%WSNOW(:,1,JPATCH)== XUNDEF )
00063       TPSNOW%T(:,JLAYER,JPATCH) = XUNDEF
00064     END WHERE
00065    END DO
00066  END IF
00067 !
00068  IF (TPSNOW%SCHEME=='D95' .OR. TPSNOW%SCHEME=='EBA' .OR. TPSNOW%SCHEME=='1-L' .OR. TPSNOW%SCHEME=='3-L' &
00069            .OR. TPSNOW%SCHEME=='CRO') THEN  
00070   DO JLAYER=1,TPSNOW%NLAYER
00071     WHERE ( TPSNOW%WSNOW(:,1,JPATCH)==0. .OR. TPSNOW%WSNOW(:,1,JPATCH)== XUNDEF )
00072       TPSNOW%RHO(:,JLAYER,JPATCH) = XUNDEF
00073     END WHERE
00074   END DO
00075  END IF
00076 !
00077  IF (TPSNOW%SCHEME=='3-L' .OR. TPSNOW%SCHEME=='CRO') THEN
00078   DO JLAYER=1,TPSNOW%NLAYER
00079     WHERE ( TPSNOW%WSNOW(:,1,JPATCH)==0. .OR. TPSNOW%WSNOW(:,1,JPATCH)== XUNDEF )
00080       TPSNOW%HEAT(:,JLAYER,JPATCH) = XUNDEF
00081      END WHERE
00082    END DO
00083  END IF
00084 !
00085 IF (TPSNOW%SCHEME=='CRO') THEN
00086   DO JLAYER=1,TPSNOW%NLAYER
00087     WHERE ( TPSNOW%WSNOW(:,1,JPATCH)==0. .OR. TPSNOW%WSNOW(:,1,JPATCH)== XUNDEF )
00088       TPSNOW%GRAN1(:,JLAYER,JPATCH) = XUNDEF
00089       TPSNOW%GRAN2(:,JLAYER,JPATCH) = XUNDEF
00090       TPSNOW%HIST(:,JLAYER,JPATCH) = XUNDEF
00091       TPSNOW%AGE(:,JLAYER,JPATCH) = XUNDEF
00092      END WHERE
00093    END DO
00094  END IF
00095 !
00096  IF (TPSNOW%SCHEME=='D95' .OR. TPSNOW%SCHEME=='EBA' .OR. TPSNOW%SCHEME=='1-L' .OR. TPSNOW%SCHEME=='3-L' &
00097           .OR. TPSNOW%SCHEME=='CRO') THEN  
00098    WHERE ( TPSNOW%WSNOW(:,1,JPATCH)==0. .OR. TPSNOW%WSNOW(:,1,JPATCH)== XUNDEF )
00099     TPSNOW%ALB(:,JPATCH) = XUNDEF
00100    END WHERE
00101  END IF
00102 !
00103  IF (TPSNOW%SCHEME=='1-L') THEN
00104    WHERE ( TPSNOW%WSNOW(:,1,JPATCH)==0. .OR. TPSNOW%WSNOW(:,1,JPATCH)== XUNDEF )
00105     TPSNOW%EMIS(:,JPATCH) = XUNDEF
00106    END WHERE
00107  END IF
00108 !
00109  IF (TPSNOW%SCHEME=='1-L') THEN
00110    WHERE ( TPSNOW%WSNOW(:,1,JPATCH)==0. .OR. TPSNOW%WSNOW(:,1,JPATCH)== XUNDEF )
00111     TPSNOW%TS(:,JPATCH) = XUNDEF
00112    END WHERE
00113  END IF
00114 
00115 END DO
00116 IF (LHOOK) CALL DR_HOOK('MKFLAG_SNOW',1,ZHOOK_HANDLE)
00117 !
00118 !--------------------------------------------------
00119 !
00120 END SUBROUTINE MKFLAG_SNOW