SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/average2_cover.F90
Go to the documentation of this file.
00001 !     #########################
00002       SUBROUTINE AVERAGE2_COVER
00003 !     #########################
00004 !
00005 !!**** *AVERAGE2_COVER* computes the cover fractions
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!    METHOD
00011 !!    ------
00012 !!   
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!    IMPLICIT ARGUMENTS
00017 !!    ------------------
00018 !!
00019 !!    REFERENCE
00020 !!    ---------
00021 !!
00022 !!    AUTHOR
00023 !!    ------
00024 !!
00025 !!    V. Masson         Meteo-France
00026 !!
00027 !!    MODIFICATION
00028 !!    ------------
00029 !!
00030 !!    Original    10/12/97
00031 !!
00032 !----------------------------------------------------------------------------
00033 !
00034 !*    0.     DECLARATION
00035 !            -----------
00036 !
00037 USE MODD_PGDWORK,   ONLY : NSIZE, XSUMCOVER
00038 USE MODD_SURF_ATM_n, ONLY : XCOVER
00039 !
00040 !
00041 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00042 USE PARKIND1  ,ONLY : JPRB
00043 !
00044 IMPLICIT NONE
00045 !
00046 !*    0.1    Declaration of arguments
00047 !            ------------------------
00048 !
00049 !
00050 !*    0.2    Declaration of other local variables
00051 !            ------------------------------------
00052 !
00053 REAL, DIMENSION(:), ALLOCATABLE :: ZUNITY
00054 !
00055 INTEGER :: JCOVER ! loop counter on cover classes
00056 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00057 !----------------------------------------------------------------------------
00058 !
00059 !*    1.     Average values
00060 !            --------------
00061 !
00062 IF (LHOOK) CALL DR_HOOK('AVERAGE2_COVER',0,ZHOOK_HANDLE)
00063 ALLOCATE(ZUNITY(SIZE(NSIZE)))
00064 ZUNITY (:) = 0.
00065 !
00066 DO JCOVER=1,SIZE(XCOVER,2)
00067   WHERE (NSIZE(:)/=0)
00068     XCOVER(:,JCOVER)=XSUMCOVER(:,JCOVER) /NSIZE(:)
00069     ZUNITY(:)=ZUNITY(:) + XCOVER(:,JCOVER)
00070   ENDWHERE
00071 END DO
00072 !
00073 DO JCOVER=1,SIZE(XCOVER,2)
00074   WHERE (NSIZE(:) /=0 )
00075     XCOVER(:,JCOVER)=XCOVER(:,JCOVER) / ZUNITY(:)
00076   END WHERE
00077 END DO
00078 !
00079 !-------------------------------------------------------------------------------
00080 DEALLOCATE(ZUNITY)
00081 IF (LHOOK) CALL DR_HOOK('AVERAGE2_COVER',1,ZHOOK_HANDLE)
00082 !-------------------------------------------------------------------------------
00083 !
00084 END SUBROUTINE AVERAGE2_COVER