SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/TRIP/mode_grid_trip.F90
Go to the documentation of this file.
00001 !##############################
00002 MODULE MODE_GRID_TRIP
00003 !##############################
00004 !
00005 !
00006 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00007 USE PARKIND1  ,ONLY : JPRB
00008 !
00009   INTERFACE PUT_GRID_TRIP
00010       MODULE PROCEDURE PUT_GRID_TRIP
00011   END INTERFACE
00012 
00013   INTERFACE GET_GRID_TRIP
00014       MODULE PROCEDURE GET_GRID_TRIP
00015   END INTERFACE
00016 !
00017 !############################################################################
00018 !############################################################################
00019 !############################################################################
00020 CONTAINS
00021 !############################################################################
00022 !############################################################################
00023 !############################################################################
00024 !     ####################################################################
00025       SUBROUTINE PUT_GRID_TRIP(PGRID_TRIP,PLONMIN,PLONMAX,PLATMIN, &
00026                                  PLATMAX,PRES,KLON,KLAT,PLON,PLAT    )  
00027 !     ####################################################################
00028 !
00029 !!****  *PUT_GRID_TRIP* - routine to store in PGRID_TRIP the horizontal grid
00030 !!
00031 !!    AUTHOR
00032 !!    ------
00033 !!      B. Decharme   *Meteo France*    
00034 !!
00035 !!    MODIFICATIONS
00036 !!    -------------
00037 !!      Original    05/2005 
00038 !-------------------------------------------------------------------------------
00039 !
00040 !*       0.    DECLARATIONS
00041 !              ------------
00042 !
00043 IMPLICIT NONE
00044 !
00045 !
00046 !*       0.1   Declarations of arguments
00047 !              -------------------------
00048 !
00049 REAL,               INTENT(IN)  :: PLONMIN  ! minimum longitude
00050 REAL,               INTENT(IN)  :: PLONMAX  ! maximum longitude
00051 REAL,               INTENT(IN)  :: PLATMIN  ! minimum latitude
00052 REAL,               INTENT(IN)  :: PLATMAX  ! maximum latitude
00053 REAL,               INTENT(IN)  :: PRES     ! 1° or 0.5° resolution
00054 INTEGER,            INTENT(IN)  :: KLON     ! number of points in longitude
00055 INTEGER,            INTENT(IN)  :: KLAT     ! number of points in latitude
00056 REAL, DIMENSION(:), INTENT(IN)  :: PLON     ! longitude
00057 REAL, DIMENSION(:), INTENT(IN)  :: PLAT     ! latitude
00058 REAL, DIMENSION(:), INTENT(OUT) :: PGRID_TRIP! parameters defining this grid
00059 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00060 !
00061 !
00062 !*       0.2   Declarations of local variables
00063 !              -------------------------------
00064 !
00065 !-------------------------------------------------------------------------------
00066 IF (LHOOK) CALL DR_HOOK('MODE_GRID_TRIP:PUT_GRID_TRIP',0,ZHOOK_HANDLE)
00067 PGRID_TRIP(1)             = PLONMIN
00068 PGRID_TRIP(2)             = PLONMAX
00069 PGRID_TRIP(3)             = PLATMIN
00070 PGRID_TRIP(4)             = PLATMAX
00071 PGRID_TRIP(5)             = PRES
00072 PGRID_TRIP(6)             = FLOAT(KLON)
00073 PGRID_TRIP(7)             = FLOAT(KLAT)
00074 PGRID_TRIP(8:7+KLON)      = PLON
00075 PGRID_TRIP(8+KLON:7+KLON+KLAT) = PLAT
00076 IF (LHOOK) CALL DR_HOOK('MODE_GRID_TRIP:PUT_GRID_TRIP',1,ZHOOK_HANDLE)
00077 !-------------------------------------------------------------------------------
00078 END SUBROUTINE PUT_GRID_TRIP
00079 !############################################################################
00080 !############################################################################
00081 !############################################################################
00082 !     ####################################################################
00083       SUBROUTINE GET_GRID_TRIP(PGRID_TRIP,PLONMIN,PLONMAX,PLATMIN, &
00084                                  PLATMAX,PRES,KLON,KLAT,PLON,PLAT    )  
00085 !     ####################################################################
00086 !
00087 !!****  *GET_GRID_TRIP* - routine to get from PGRID_TRIP the horizontal grid
00088 !!
00089 !!    AUTHOR
00090 !!    ------
00091 !!      B. Decharme   *Meteo France*    
00092 !!
00093 !!    MODIFICATIONS
00094 !!    -------------
00095 !!      Original    05/2005 
00096 !-------------------------------------------------------------------------------
00097 !
00098 !*       0.    DECLARATIONS
00099 !              ------------
00100 !
00101 IMPLICIT NONE
00102 !
00103 !
00104 !*       0.1   Declarations of arguments
00105 !              -------------------------
00106 !
00107 REAL, DIMENSION(:), INTENT(IN)            :: PGRID_TRIP! parameters defining this grid
00108 REAL,               INTENT(OUT), OPTIONAL :: PLONMIN  ! minimum longitude
00109 REAL,               INTENT(OUT), OPTIONAL :: PLONMAX  ! maximum longitude
00110 REAL,               INTENT(OUT), OPTIONAL :: PLATMIN  ! minimum latitude
00111 REAL,               INTENT(OUT), OPTIONAL :: PLATMAX  ! maximum latitude
00112 REAL,               INTENT(OUT), OPTIONAL :: PRES     ! 1° or 0.5° resolution
00113 INTEGER,            INTENT(OUT), OPTIONAL :: KLON     ! number of points in longitude
00114 INTEGER,            INTENT(OUT), OPTIONAL :: KLAT     ! number of points in latitude
00115 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLON     ! longitude
00116 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLAT     ! latitude
00117 !
00118 !
00119 !*       0.2   Declarations of local variables
00120 !              -------------------------------
00121 !
00122 INTEGER :: ILON, ILAT
00123 INTEGER :: IL
00124 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00125 !-------------------------------------------------------------------------------
00126 IF (LHOOK) CALL DR_HOOK('MODE_GRID_TRIP:GET_GRID_TRIP',0,ZHOOK_HANDLE)
00127 ILON = NINT(PGRID_TRIP(6))
00128 ILAT = NINT(PGRID_TRIP(7))
00129 !
00130 IF (PRESENT(PLONMIN))  PLONMIN = PGRID_TRIP(1)
00131 IF (PRESENT(PLONMAX))  PLONMAX = PGRID_TRIP(2)
00132 IF (PRESENT(PLATMIN))  PLATMIN = PGRID_TRIP(3)
00133 IF (PRESENT(PLATMAX))  PLATMAX = PGRID_TRIP(4)
00134 IF (PRESENT(PRES   ))  PRES    = PGRID_TRIP(5)
00135 IF (PRESENT(KLON   ))  KLON    = ILON
00136 IF (PRESENT(KLAT   ))  KLAT    = ILAT
00137 IF (PRESENT(PLON   ))  PLON(:) = PGRID_TRIP(8:7+ILON)
00138 IF (PRESENT(PLAT   ))  PLAT(:) = PGRID_TRIP(8+ILON:7+ILON+ILAT)
00139 IF (LHOOK) CALL DR_HOOK('MODE_GRID_TRIP:GET_GRID_TRIP',1,ZHOOK_HANDLE)
00140 !
00141 !-------------------------------------------------------------------------------
00142 END SUBROUTINE GET_GRID_TRIP
00143 !---------------------------------------------------------------------------------
00144 !
00145 !############################################################################
00146 !############################################################################
00147 !############################################################################
00148 !############################################################################
00149 !############################################################################
00150 !############################################################################
00151 !
00152 END MODULE MODE_GRID_TRIP