SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/ini_ssowork.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE INI_SSOWORK(PMESHLENGTH,PDLAT,PDLON)
00003 !     ###############################################
00004 !
00005 !!**** *INI_SSOWORK* initializes and allocate work arrays for SSO reading
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!    METHOD
00011 !!    ------
00012 !!   
00013 !
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!    AUTHOR
00024 !!    ------
00025 !!
00026 !!    V. Masson        Meteo-France
00027 !!
00028 !!    MODIFICATION
00029 !!    ------------
00030 !!
00031 !!    Original    10/12/97
00032 !!
00033 !
00034 USE MODD_PGDWORK,  ONLY : XSSQO, LSSQO, NSSO
00035 USE MODD_SURF_PAR, ONLY : NUNDEF, XUNDEF
00036 USE MODD_PGD_GRID, ONLY : NL
00037 !
00038 !
00039 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00040 USE PARKIND1  ,ONLY : JPRB
00041 !
00042 IMPLICIT NONE
00043 !
00044 !----------------------------------------------------------------------------
00045 !
00046 !*    0.1    Declaration of arguments
00047 !            ------------------------
00048 !
00049 REAL, OPTIONAL, INTENT(IN) :: PMESHLENGTH ! average mesh length in degrees
00050 REAL, OPTIONAL, INTENT(IN) :: PDLAT       ! input file mesh size (in latitude,  degrees)
00051 REAL, OPTIONAL, INTENT(IN) :: PDLON       ! input file mesh size (in longitude, degrees)
00052 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00053 !
00054 !----------------------------------------------------------------------------
00055 !
00056 !
00057 !*    1.     Adapt subgrid mesh to input file resolution
00058 !            -------------------------------------------
00059 !
00060 IF (LHOOK) CALL DR_HOOK('INI_SSOWORK',0,ZHOOK_HANDLE)
00061 IF (PRESENT(PMESHLENGTH) .AND. PRESENT(PDLAT) .AND. PRESENT(PDLON)) THEN
00062   IF (PDLAT/= XUNDEF .AND. PDLON /= XUNDEF) THEN
00063     NSSO = NINT( 2. * PMESHLENGTH / (PDLAT + PDLON) )
00064     NSSO = MAX(NSSO,3)
00065     NSSO = MIN(NSSO,10)
00066   ELSE
00067     NSSO = 10
00068   END IF
00069 ELSE
00070   NSSO = 10
00071 END IF
00072 !
00073 !----------------------------------------------------------------------------
00074 !
00075 !*    2.     Allocate subgrid arrays
00076 !            -----------------------
00077 !
00078 IF (ALLOCATED(XSSQO)) DEALLOCATE(XSSQO)
00079 IF (ALLOCATED(LSSQO)) DEALLOCATE(LSSQO)
00080 !
00081 ALLOCATE(XSSQO(NSSO,NSSO,NL))
00082 ALLOCATE(LSSQO(NSSO,NSSO,NL))
00083 XSSQO(:,:,:) = -99999.
00084 LSSQO(:,:,:) = .FALSE.
00085 IF (LHOOK) CALL DR_HOOK('INI_SSOWORK',1,ZHOOK_HANDLE)
00086 !
00087 !----------------------------------------------------------------------------
00088 !
00089 END SUBROUTINE INI_SSOWORK