SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE GET_MESH_INDEX(KLUOUT,PLAT,PLON,KINDEX,KSSO,KISSOX,KISSOY) 00003 ! ############################################################## 00004 ! 00005 !!**** *GET_MESH_INDEX* get the grid mesh where point (lat,lon) is located 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 !! 00010 !! METHOD 00011 !! ------ 00012 !! 00013 !! REFERENCE 00014 !! --------- 00015 !! 00016 !! AUTHOR 00017 !! ------ 00018 !! 00019 !! V. Masson Meteo-France 00020 !! 00021 !! MODIFICATION 00022 !! ------------ 00023 !! 00024 !! Original 12/09/95 00025 !! 00026 !---------------------------------------------------------------------------- 00027 ! 00028 !* 0. DECLARATION 00029 ! ----------- 00030 ! 00031 USE MODD_PGD_GRID, ONLY : CGRID, XGRID_PAR, NGRID_PAR 00032 USE MODD_POINT_OVERLAY 00033 ! 00034 ! 00035 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00036 USE PARKIND1 ,ONLY : JPRB 00037 ! 00038 USE MODI_ABOR1_SFX 00039 ! 00040 USE MODI_GET_MESH_INDEX_CONF_PROJ 00041 ! 00042 USE MODI_GET_MESH_INDEX_GAUSS 00043 ! 00044 USE MODI_GET_MESH_INDEX_IGN 00045 ! 00046 USE MODI_GET_MESH_INDEX_LONLAT_REG 00047 ! 00048 USE MODI_GET_MESH_INDEX_LONLATVAL 00049 IMPLICIT NONE 00050 ! 00051 !* 0.1 Declaration of arguments 00052 ! ------------------------ 00053 ! 00054 INTEGER, INTENT(IN) :: KLUOUT ! output listing 00055 REAL, DIMENSION(:), INTENT(IN) :: PLAT ! latitude of the point 00056 REAL, DIMENSION(:), INTENT(IN) :: PLON ! longitude of the point 00057 INTEGER, DIMENSION(:), INTENT(OUT) :: KINDEX ! index of the grid mesh where the point is 00058 INTEGER, OPTIONAL, INTENT(IN) :: KSSO ! number of subgrid mesh in each direction 00059 INTEGER, DIMENSION(:), OPTIONAL, INTENT(OUT) :: KISSOX ! X index of the subgrid mesh where the point is 00060 INTEGER, DIMENSION(:), OPTIONAL, INTENT(OUT) :: KISSOY ! Y index of the subgrid mesh where the point is 00061 ! 00062 !* 0.2 Declaration of other local variables 00063 ! ------------------------------------ 00064 ! 00065 INTEGER :: ISSO 00066 INTEGER, DIMENSION(SIZE(PLAT)) :: IISSOX 00067 INTEGER, DIMENSION(SIZE(PLAT)) :: IISSOY 00068 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00069 !---------------------------------------------------------------------------- 00070 ! 00071 !* 1. Get position 00072 ! ------------ 00073 ! 00074 IF (LHOOK) CALL DR_HOOK('GET_MESH_INDEX',0,ZHOOK_HANDLE) 00075 SELECT CASE (CGRID) 00076 ! 00077 CASE("CONF PROJ ","LONLAT REG","GAUSS ","IGN ","LONLATVAL ") 00078 IF (PRESENT(KSSO) .AND. PRESENT(KISSOX) .AND. PRESENT(KISSOY)) THEN 00079 ISSO = KSSO 00080 ELSE 00081 ISSO = 0 00082 ENDIF 00083 ! 00084 IF (CGRID=="CONF PROJ ") THEN 00085 CALL GET_MESH_INDEX_CONF_PROJ(NGRID_PAR,SIZE(PLAT),XGRID_PAR,PLAT,PLON,KINDEX,ISSO,IISSOX,IISSOY) 00086 XNUM(:)=0 00087 ENDIF 00088 IF (CGRID=="LONLAT REG") THEN 00089 CALL GET_MESH_INDEX_LONLAT_REG(NGRID_PAR,SIZE(PLAT),XGRID_PAR,PLAT,PLON,KINDEX,ISSO,IISSOX,IISSOY) 00090 XNUM(:)=0 00091 ENDIF 00092 IF (CGRID=="GAUSS ") THEN 00093 CALL GET_MESH_INDEX_GAUSS(NGRID_PAR,SIZE(PLAT),XGRID_PAR,PLAT,PLON,KINDEX,ISSO,IISSOX,IISSOY) 00094 XNUM(:)=0 00095 ENDIF 00096 IF (CGRID=="IGN ") & 00097 CALL GET_MESH_INDEX_IGN(NGRID_PAR,SIZE(PLAT),XGRID_PAR,PLAT,PLON,KINDEX,ISSO,IISSOX,IISSOY) 00098 IF (CGRID=="LONLATVAL ") & 00099 CALL GET_MESH_INDEX_LONLATVAL(NGRID_PAR,SIZE(PLAT),XGRID_PAR,PLAT,PLON,KINDEX,ISSO,IISSOX,IISSOY) 00100 ! 00101 IF (PRESENT(KSSO) .AND. PRESENT(KISSOX) .AND. PRESENT(KISSOY)) THEN 00102 KISSOX = IISSOX 00103 KISSOY = IISSOY 00104 ENDIF 00105 00106 CASE DEFAULT 00107 WRITE(KLUOUT,*) 'error in physiographic fields computations (routine GET_MESH_INDEX)' 00108 WRITE(KLUOUT,*) 'It is impossible to retrieve geographical coordinates (latitude, longitude)' 00109 WRITE(KLUOUT,*) 'for the following grid type: CGRID = ', CGRID 00110 CALL ABOR1_SFX('GET_MESH_INDEX: IMPOSSIBLE TO RETRIEVE GEOGRAPHICAL COORDINATES') 00111 END SELECT 00112 IF (LHOOK) CALL DR_HOOK('GET_MESH_INDEX',1,ZHOOK_HANDLE) 00113 ! 00114 !------------------------------------------------------------------------------- 00115 ! 00116 END SUBROUTINE GET_MESH_INDEX