|
SURFEX v7.3
General documentation of Surfex
|
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
1.8.0