SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/pack_pgd_soil.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE PACK_PGD_SOIL(HPROGRAM, PSAND, PCLAY, PRUNOFFB, PWDRAIN)
00003 !     ##############################################################
00004 !
00005 !!**** *PACK_PGD_SOIL* packs ISBA physiographic fields from all surface points to ISBA points
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    03/2004
00032 !!    Escobar J.  08/02/2005 : bug declare ILU local variable
00033 !!    B. Decharme     20008  : XWDRAIN
00034 !----------------------------------------------------------------------------
00035 !
00036 !*    0.     DECLARATION
00037 !            -----------
00038 !
00039 USE MODD_ISBA_n,          ONLY : XSAND, XCLAY, XRUNOFFB, XWDRAIN, NGROUND_LAYER
00040 USE MODD_ISBA_GRID_n,     ONLY : NDIM, CGRID, XGRID_PAR
00041 !
00042 USE MODI_PACK_SAME_RANK
00043 !
00044 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00045 USE PARKIND1  ,ONLY : JPRB
00046 !
00047 USE MODI_GET_SURF_MASK_n
00048 !
00049 USE MODI_GET_TYPE_DIM_n
00050 !
00051 USE MODI_GET_LUOUT
00052 IMPLICIT NONE
00053 !
00054 !*    0.1    Declaration of arguments
00055 !            ------------------------
00056 !
00057  CHARACTER(LEN=6),        INTENT(IN) :: HPROGRAM  ! Type of program
00058 REAL,    DIMENSION(:,:), INTENT(IN) :: PSAND     ! sand   on all surface points
00059 REAL,    DIMENSION(:,:), INTENT(IN) :: PCLAY     ! clay   on all surface points
00060 REAL,    DIMENSION(:),   INTENT(IN) :: PRUNOFFB  ! runoff coef. on all surface points
00061 REAL,    DIMENSION(:),   INTENT(IN) :: PWDRAIN   ! drainage coef. on all surface points
00062 !
00063 !
00064 !*    0.2    Declaration of local variables
00065 !            ------------------------------
00066 !
00067 INTEGER                        :: ILU    ! expected physical size of full surface array
00068 INTEGER                        :: ILUOUT ! output listing logical unit
00069 INTEGER, DIMENSION(:), POINTER :: IMASK  ! mask for packing from complete field to nature field
00070 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00071 !
00072 !-------------------------------------------------------------------------------
00073 !
00074 IF (LHOOK) CALL DR_HOOK('PACK_PGD_SOIL',0,ZHOOK_HANDLE)
00075  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00076 !
00077 !*    1.      Number of points and packing
00078 !             ----------------------------
00079 !
00080  CALL GET_TYPE_DIM_n('NATURE',NDIM)
00081 ALLOCATE(IMASK(NDIM))
00082 ILU=0
00083  CALL GET_SURF_MASK_n('NATURE',NDIM,IMASK,ILU,ILUOUT)
00084 !
00085 !
00086 !-------------------------------------------------------------------------------
00087 !
00088 !*    2.      Packing of fields
00089 !             -----------------
00090 !
00091 ALLOCATE(XSAND(NDIM,NGROUND_LAYER))
00092  CALL PACK_SAME_RANK(IMASK,PSAND(:,:),XSAND(:,:))
00093 !
00094 ALLOCATE(XCLAY(NDIM,NGROUND_LAYER))
00095  CALL PACK_SAME_RANK(IMASK,PCLAY(:,:),XCLAY(:,:))
00096 !
00097 !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00098 !
00099 ALLOCATE(XRUNOFFB(NDIM))
00100  CALL PACK_SAME_RANK(IMASK,PRUNOFFB(:),XRUNOFFB(:))
00101 !
00102 ALLOCATE(XWDRAIN(NDIM))
00103  CALL PACK_SAME_RANK(IMASK,PWDRAIN(:),XWDRAIN(:))
00104 IF (LHOOK) CALL DR_HOOK('PACK_PGD_SOIL',1,ZHOOK_HANDLE)
00105 !
00106 !-------------------------------------------------------------------------------
00107 !
00108 END SUBROUTINE PACK_PGD_SOIL