SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/get_surf_sizen.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE GET_SURF_SIZE_n(HTYPE,KL)
00003 !     #####################################################
00004 !
00005 !!****  *GET_SURF_SIZE_n* - routine to define the masks between all surface 
00006 !!    points and each of the four surface types
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!**  METHOD
00012 !!    -------
00013 !!
00014 !!    REFERENCE
00015 !!    ---------
00016 !!
00017 !!
00018 !!    AUTHOR
00019 !!    ------
00020 !!      V. Masson    *Meteo France*     
00021 !!
00022 !!    MODIFICATIONS
00023 !!    -------------
00024 !!      Original    01/2004
00025 !-------------------------------------------------------------------------------
00026 !
00027 !*       0.    DECLARATIONS
00028 !              ------------
00029 !
00030 USE MODD_SURF_ATM_n, ONLY : XCOVER, XNATURE, XSEA, XTOWN, XWATER
00031 !
00032 USE MODI_CONVERT_COVER_FRAC
00033 !
00034 !
00035 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00036 USE PARKIND1  ,ONLY : JPRB
00037 !
00038 IMPLICIT NONE
00039 !
00040 !*       0.1   Declarations of arguments
00041 !              -------------------------
00042 !
00043  CHARACTER(LEN=*),  INTENT(IN)    :: HTYPE    ! Type of surface
00044 INTEGER,           INTENT(OUT)   :: KL       ! number of points of this surface type
00045 !
00046 !*       0.2   Declarations of local variables
00047 !              -------------------------------
00048 !
00049 REAL, DIMENSION(:),   ALLOCATABLE :: ZSEA   ! sea cover
00050 REAL, DIMENSION(:),   ALLOCATABLE :: ZNATURE! nature cover
00051 REAL, DIMENSION(:),   ALLOCATABLE :: ZTOWN  ! town cover
00052 REAL, DIMENSION(:),   ALLOCATABLE :: ZWATER ! water cover
00053 !
00054 INTEGER           :: ILU    ! total horizontal size
00055 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00056 !-------------------------------------------------------------------------------
00057 !
00058 !*        1.    Fractions
00059 !              ---------
00060 !
00061 IF (LHOOK) CALL DR_HOOK('GET_SURF_SIZE_N',0,ZHOOK_HANDLE)
00062 ILU = SIZE(XCOVER,1)
00063 !
00064 ALLOCATE(ZSEA   (ILU))
00065 ALLOCATE(ZNATURE(ILU))
00066 ALLOCATE(ZTOWN  (ILU))
00067 ALLOCATE(ZWATER (ILU))
00068 IF (.NOT.ASSOCIATED(XSEA)) THEN
00069   CALL CONVERT_COVER_FRAC(XCOVER,ZSEA,ZNATURE,ZTOWN,ZWATER)
00070 ELSE
00071   ZSEA    = XSEA
00072   ZNATURE = XNATURE
00073   ZWATER  = XWATER
00074   ZTOWN   = XTOWN
00075 END IF
00076 !
00077 SELECT CASE (HTYPE)
00078   CASE ('FULL')
00079    KL = ILU
00080    !
00081   CASE ('NATURE')
00082    KL = COUNT(ZNATURE(:) > 0.)
00083    !
00084   CASE ('SEA')
00085    KL = COUNT(ZSEA(:) > 0.)
00086    !
00087   CASE ('TOWN')
00088    KL = COUNT(ZTOWN(:) > 0.)
00089    !
00090   CASE ('WATER')
00091    !       
00092    KL = COUNT(ZWATER(:) > 0.)
00093    !
00094   CASE ('LAND')
00095    !
00096    KL = COUNT(ZNATURE(:) + ZTOWN(:) > 0.)
00097    !
00098 END SELECT
00099 !-------------------------------------------------------------------------------
00100 DEALLOCATE(ZSEA   )
00101 DEALLOCATE(ZNATURE)
00102 DEALLOCATE(ZTOWN  )
00103 DEALLOCATE(ZWATER )
00104 IF (LHOOK) CALL DR_HOOK('GET_SURF_SIZE_N',1,ZHOOK_HANDLE)
00105 !-------------------------------------------------------------------------------
00106 !
00107 END SUBROUTINE GET_SURF_SIZE_n