SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/canopy_grid.F90
Go to the documentation of this file.
00001 !     #########################################
00002       SUBROUTINE CANOPY_GRID(KI,KLVL,PZ,PZF,PDZ,PDZF)
00003 !     #########################################
00004 !
00005 !!****  *CANOPY_GRID* - computation of vertical grid coordinatesa at 
00006 !!                      half levels and grid depths at half and full
00007 !!                      levels
00008 !!                        
00009 !!
00010 !!    PURPOSE
00011 !!    -------
00012 !!
00013 !!**  METHOD
00014 !!    ------
00015 !!
00016 !
00017 !
00018 !  --------------------------------- PZ(k+1)                     PDZ(k+1)
00019 !                                                                           ^
00020 !                                                                           |
00021 !                                                                           |
00022 !  - - - - - - - - - - - - - - - - - PZf(k+1)                               | PDZf(k+1)
00023 !                                                              ^            |
00024 !                                                              |            |
00025 !  --------------------------------- PZ(k), XU, XT, XQ, XTKE   | PDZ(k)     V
00026 !                                                              |            ^
00027 !  - - - - - - - - - - - - - - - - - PZf(k)                    V            | PDZf(k)
00028 !  --------------------------------- PZ(k-1)                     PDZ(k-1)   V
00029 !  - - - - - - - - - - - - - - - - - PZf(k-1)
00030 !
00031 
00032 !!    EXTERNAL
00033 !!    --------
00034 !!
00035 !!
00036 !!    IMPLICIT ARGUMENTS
00037 !!    ------------------
00038 !!
00039 !!    REFERENCE
00040 !!    ---------
00041 !!
00042 !!
00043 !!    AUTHOR
00044 !!    ------
00045 !!      V. Masson   *Meteo France*      
00046 !!
00047 !!    MODIFICATIONS
00048 !!    -------------
00049 !!      Original    07/2006 
00050 !-------------------------------------------------------------------------------
00051 !
00052 !*       0.    DECLARATIONS
00053 !              ------------
00054 !
00055 !
00056 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00057 USE PARKIND1  ,ONLY : JPRB
00058 !
00059 IMPLICIT NONE
00060 !
00061 !*       0.1   Declarations of arguments
00062 !              -------------------------
00063 !
00064 INTEGER,                  INTENT(IN)    :: KI     ! number of horizontal points
00065 INTEGER,                  INTENT(IN)    :: KLVL   ! number of levels in canopy
00066 REAL, DIMENSION(KI,KLVL), INTENT(IN)    :: PZ     ! heights of canopy levels              (m)
00067 REAL, DIMENSION(KI,KLVL), INTENT(OUT)   :: PZF    ! heights of surface between canopy lev.(m)
00068 REAL, DIMENSION(KI,KLVL), INTENT(OUT)   :: PDZF   ! depth between 2 full canopy levels    (m)
00069 !                                                 ! PDZF is located at half levels
00070 REAL, DIMENSION(KI,KLVL), INTENT(OUT)   :: PDZ    ! depth between 2 half canopy levels    (m)
00071 !                                                 ! PDZ is located at full levels
00072 !
00073 !
00074 !*       0.2   Declarations of local variables
00075 !              -------------------------------
00076 !
00077 INTEGER :: JLAYER                 ! loop counter on layers
00078 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00079 !
00080 !-------------------------------------------------------------------------------
00081 !
00082 !*    1. Geometric computations
00083 !        ----------------------
00084 !
00085 !
00086 !*    1.1 layer depths (variable located at half levels below full levels)
00087 !         ------------
00088 !
00089 IF (LHOOK) CALL DR_HOOK('CANOPY_GRID',0,ZHOOK_HANDLE)
00090 PDZF(:,:) = -999.
00091 PDZF(:,1) = 2.*PZ(:,1)
00092 DO JLAYER=2,KLVL
00093   PDZF(:,JLAYER) = PZ(:,JLAYER) - PZ(:,JLAYER-1)
00094 END DO
00095 !
00096 !*    1.2 Layer heights (variable located at half levels below full levels)
00097 !         -------------
00098 !
00099 PZF(:,:) = -999.
00100 PZF(:,1) = 0.
00101 DO JLAYER=2,KLVL
00102   PZF(:,JLAYER) = 2.*PZ(:,JLAYER-1) - PZF(:,JLAYER-1)
00103 END DO
00104 !
00105 !
00106 !*    1.3 layer depths (variable located at full levels)
00107 !         ------------
00108 !
00109 PDZ(:,:) = -999.
00110 DO JLAYER=1,KLVL-1
00111   PDZ(:,JLAYER) = PZF(:,JLAYER+1) - PZF(:,JLAYER)
00112 END DO
00113 PDZ(:,KLVL) = 2.*(PZ(:,KLVL)-PZF(:,KLVL))
00114 IF (LHOOK) CALL DR_HOOK('CANOPY_GRID',1,ZHOOK_HANDLE)
00115 !
00116 !-------------------------------------------------------------------------------
00117 END SUBROUTINE CANOPY_GRID