SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE ISBA_BUDGET_INIT(HISBA, HSNOW_ISBA, & 00003 PWG, PWGI, PWR, PSNOWSWE, PDG, PDZG, & 00004 PWG_INI, PWGI_INI, PWR_INI, PSWE_INI ) 00005 ! ############################################################################### 00006 ! 00007 !!**** *ISBA_BUDGET_INIT * - initialize water and energy budget for ISBA 00008 !! 00009 !! PURPOSE 00010 !! ------- 00011 ! 00012 !!** METHOD 00013 !! ------ 00014 !! 00015 !! REFERENCE 00016 !! --------- 00017 !! 00018 !! 00019 !! AUTHOR 00020 !! ------ 00021 !! B. Decharme 00022 !! 00023 !! MODIFICATIONS 00024 !! ------------- 00025 !! Original 10/2012 00026 !! 00027 !!------------------------------------------------------------------ 00028 ! 00029 USE MODD_SURF_PAR, ONLY : XUNDEF 00030 USE MODD_CSTS, ONLY : XRHOLW 00031 ! 00032 USE MODD_DIAG_EVAP_ISBA_n, ONLY : LWATER_BUDGET 00033 ! 00034 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00035 USE PARKIND1 ,ONLY : JPRB 00036 ! 00037 IMPLICIT NONE 00038 ! 00039 !* 0.1 declarations of arguments 00040 ! 00041 CHARACTER(LEN=*), INTENT(IN) :: HISBA ! type of ISBA version: 00042 ! ! '2-L' (default) 00043 ! ! '3-L' 00044 ! ! 'DIF' 00045 CHARACTER(LEN=*), INTENT(IN) :: HSNOW_ISBA ! 'DEF' = Default F-R snow scheme 00046 ! ! (Douville et al. 1995) 00047 ! ! '3-L' = 3-L snow scheme (option) 00048 ! ! (Boone and Etchevers 2000) 00049 ! ! 'CRO' = Crocus snow scheme 00050 ! 00051 REAL, DIMENSION(:,:), INTENT(IN) :: PWG ! liquid water content by layer (m3/m3) 00052 REAL, DIMENSION(:,:), INTENT(IN) :: PWGI ! ice content by layer (m3/m3) 00053 REAL, DIMENSION(:), INTENT(IN) :: PWR ! liquid water on veg canopy (kg m-2) 00054 REAL, DIMENSION(:,:), INTENT(IN) :: PSNOWSWE ! snow water equivalent by layer (kg m-2) 00055 REAL, DIMENSION(:,:), INTENT(IN) :: PDG ! soil layer depth (m) 00056 REAL, DIMENSION(:,:), INTENT(IN) :: PDZG ! soil layer thickness (m) 00057 ! 00058 REAL, DIMENSION(:), INTENT(OUT) :: PWG_INI ! total wg at t-1 (kg m-2) 00059 REAL, DIMENSION(:), INTENT(OUT) :: PWGI_INI ! total wgi at t-1 (kg m-2) 00060 REAL, DIMENSION(:), INTENT(OUT) :: PWR_INI ! total wr at t-1 (kg m-2) 00061 REAL, DIMENSION(:), INTENT(OUT) :: PSWE_INI ! total swe at t-1 (kg m-2) 00062 ! 00063 !* 0.2 declarations of local variables 00064 ! 00065 INTEGER :: INI, INL, INLS 00066 INTEGER :: JI, JL 00067 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00068 ! 00069 !------------------------------------------------------------------------------------- 00070 ! 00071 IF (LHOOK) CALL DR_HOOK('ISBA_BUDGET_INIT',0,ZHOOK_HANDLE) 00072 ! 00073 INI =SIZE(PWG,1) 00074 INL =SIZE(PWG,2) 00075 INLS=SIZE(PSNOWSWE,2) 00076 ! 00077 PWG_INI (:) = XUNDEF 00078 PWGI_INI(:) = XUNDEF 00079 PSWE_INI(:) = XUNDEF 00080 PWR_INI (:) = XUNDEF 00081 ! 00082 ! 00083 ! * Water budget 00084 ! ------------ 00085 ! 00086 IF(LWATER_BUDGET)THEN 00087 ! 00088 ! total wr at t-1 00089 PWR_INI(:)=PWR(:) 00090 ! 00091 ! total swe at t-1 00092 PSWE_INI(:)=0.0 00093 DO JL=1,INLS 00094 DO JI=1,INI 00095 PSWE_INI(JI)=PSWE_INI(JI)+PSNOWSWE(JI,JL) 00096 ENDDO 00097 ENDDO 00098 ! 00099 ! total wg and wgi at t-1 00100 PWG_INI (:)= 0.0 00101 PWGI_INI(:)= 0.0 00102 IF(HISBA=='DIF')THEN 00103 DO JL=1,INL 00104 DO JI=1,INI 00105 IF(PWG(JI,JL)/=XUNDEF)THEN 00106 PWG_INI (JI)=PWG_INI (JI)+PWG (JI,JL)*PDZG(JI,JL)*XRHOLW 00107 PWGI_INI(JI)=PWGI_INI(JI)+PWGI(JI,JL)*PDZG(JI,JL)*XRHOLW 00108 ENDIF 00109 ENDDO 00110 ENDDO 00111 ELSE 00112 PWG_INI (:)=PWG (:,2)*PDG(:,2)*XRHOLW 00113 PWGI_INI(:)=PWGI(:,2)*PDG(:,2)*XRHOLW 00114 IF(HISBA=='3-L')THEN 00115 PWG_INI(:)=PWG_INI(:)+PWG(:,3)*(PDG(:,3)-PDG(:,2))*XRHOLW 00116 ENDIF 00117 ENDIF 00118 ! 00119 ENDIF 00120 ! 00121 ! * Energy budget 00122 ! ------------- 00123 ! 00124 ! not yet implemented 00125 ! 00126 ! 00127 IF (LHOOK) CALL DR_HOOK('ISBA_BUDGET_INIT',1,ZHOOK_HANDLE) 00128 !------------------------------------------------------------------------------------- 00129 ! 00130 END SUBROUTINE ISBA_BUDGET_INIT