SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/latlon_grid.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE LATLON_GRID(HGRID,KGRID_PAR,KL,KLUOUT,PGRID_PAR,PLAT,PLON,PMESH_SIZE,PDIR)
00003 !     #########################################################################
00004 !
00005 !!****  *LATLON_GRID* - routine to compute the horizontal geographic fields
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      V. Masson   *Meteo France*      
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    01/2004 
00031 !!                  10/2007 (E. Martin) IGN grids
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 !
00037 !
00038 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00039 USE PARKIND1  ,ONLY : JPRB
00040 !
00041 USE MODI_ABOR1_SFX
00042 !
00043 USE MODI_LATLON_GRIDTYPE_CARTESIAN
00044 !
00045 USE MODI_LATLON_GRIDTYPE_CONF_PROJ
00046 !
00047 USE MODI_LATLON_GRIDTYPE_GAUSS
00048 !
00049 USE MODI_LATLON_GRIDTYPE_IGN
00050 !
00051 USE MODI_LATLON_GRIDTYPE_LONLAT_REG
00052 !
00053 USE MODI_LATLON_GRIDTYPE_LONLATVAL
00054 IMPLICIT NONE
00055 !
00056 !*       0.1   Declarations of arguments
00057 !              -------------------------
00058 !
00059  CHARACTER(LEN=10),  INTENT(IN)  :: HGRID      ! grid type
00060 INTEGER,            INTENT(IN)  :: KGRID_PAR  ! size of PGRID_PAR
00061 INTEGER,            INTENT(IN)  :: KL         ! number of points
00062 INTEGER,            INTENT(IN)  :: KLUOUT     ! output listing logical unit
00063 REAL, DIMENSION(:), INTENT(IN)  :: PGRID_PAR  ! parameters defining this grid
00064 REAL, DIMENSION(:), INTENT(OUT) :: PLAT       ! latitude  (degrees)
00065 REAL, DIMENSION(:), INTENT(OUT) :: PLON       ! longitude (degrees)
00066 REAL, DIMENSION(:), INTENT(OUT) :: PMESH_SIZE ! mesh size (m2)
00067 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PDIR ! direction of main grid Y axis (deg. from N, clockwise)
00068 !
00069 !*       0.2   Declarations of local variables
00070 !              -------------------------------
00071 !
00072 REAL, DIMENSION(KL) :: ZDIR
00073 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00074 !---------------------------------------------------------------------------
00075 !
00076 IF (LHOOK) CALL DR_HOOK('LATLON_GRID',0,ZHOOK_HANDLE)
00077 SELECT CASE (HGRID)
00078 !
00079 !*    1.      Conformal projection grid
00080 !             -------------------------
00081 !
00082   CASE ('CONF PROJ ')
00083     CALL LATLON_GRIDTYPE_CONF_PROJ(KGRID_PAR,KL,PGRID_PAR,PLAT,PLON,PMESH_SIZE,ZDIR)
00084     IF (PRESENT(PDIR)) PDIR = ZDIR
00085     ! note that all points of the grid will be kept, whatever the surface
00086     ! type under consideration (e.g. sea points will be kept even for
00087     ! initialization of continents)
00088     !
00089 
00090 !*    2.      latitude/longitude grid
00091 !             -----------------------
00092 !
00093   CASE ('LONLAT REG')
00094     CALL LATLON_GRIDTYPE_LONLAT_REG(KGRID_PAR,KL,PGRID_PAR,PLAT,PLON,PMESH_SIZE,ZDIR)
00095     IF (PRESENT(PDIR)) PDIR = ZDIR
00096 
00097 !
00098 !*    3.      Cartesian grid
00099 !             --------------
00100 !
00101   CASE ('CARTESIAN ')
00102     CALL LATLON_GRIDTYPE_CARTESIAN(KGRID_PAR,KL,PGRID_PAR,PLAT,PLON,PMESH_SIZE,ZDIR)
00103     IF (PRESENT(PDIR)) PDIR = ZDIR
00104     ! note that all points of the grid will be kept, whatever the surface
00105     ! type under consideration (e.g. sea points will be kept even for
00106     ! initialization of continents)
00107     !
00108 !*    4.      gaussian grid
00109 !             -------------
00110 !
00111   CASE ('GAUSS     ')
00112     CALL LATLON_GRIDTYPE_GAUSS(KGRID_PAR,KL,PGRID_PAR,PLAT,PLON,PMESH_SIZE,ZDIR)
00113     IF (PRESENT(PDIR)) PDIR = ZDIR
00114 !
00115 !*    4.      IGN grid
00116 !             --------
00117 !
00118   CASE ('IGN       ')
00119     CALL LATLON_GRIDTYPE_IGN(KGRID_PAR,KL,PGRID_PAR,PLAT,PLON,PMESH_SIZE,ZDIR)
00120     IF (PRESENT(PDIR)) PDIR = ZDIR
00121 !
00122 !*    4.      lonlatval grid
00123 !             --------
00124 !
00125   CASE ('LONLATVAL ')
00126     CALL LATLON_GRIDTYPE_LONLATVAL(KGRID_PAR,KL,PGRID_PAR,PLAT,PLON,PMESH_SIZE,ZDIR)
00127     IF (PRESENT(PDIR)) PDIR = ZDIR
00128 
00129 
00130 
00131   CASE DEFAULT
00132     CALL ABOR1_SFX('LATLON_GRID: GRID TYPE NOT SUPPORTED '//HGRID)
00133 
00134 END SELECT
00135 IF (LHOOK) CALL DR_HOOK('LATLON_GRID',1,ZHOOK_HANDLE)
00136 !
00137 !---------------------------------------------------------------------------
00138 !
00139 END SUBROUTINE LATLON_GRID