SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/isba_budget_init.F90
Go to the documentation of this file.
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