SURFEX v7.3
General documentation of Surfex
|
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