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