SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE GET_GRID_DIM_LONLATVAL(KGRID_PAR,PGRID_PAR,ORECT,KDIM1,KDIM2) 00003 ! ############################################################## 00004 ! 00005 !!**** *GET_GRID_DIM_LONLAT_REG* get the grid mesh dimensions 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 03/2004 00025 !! 00026 !---------------------------------------------------------------------------- 00027 ! 00028 !* 0. DECLARATION 00029 ! ----------- 00030 ! 00031 USE MODE_GRIDTYPE_LONLATVAL 00032 ! 00033 ! 00034 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00035 USE PARKIND1 ,ONLY : JPRB 00036 ! 00037 IMPLICIT NONE 00038 ! 00039 !* 0.1 Declaration of arguments 00040 ! ------------------------ 00041 ! 00042 INTEGER, INTENT(IN) :: KGRID_PAR ! size of PGRID_PAR 00043 REAL, DIMENSION(KGRID_PAR), INTENT(IN) :: PGRID_PAR ! grid parameters 00044 LOGICAL, INTENT(OUT) :: ORECT ! T if rectangular grid 00045 INTEGER, INTENT(OUT) :: KDIM1 ! 1st dimension 00046 INTEGER, INTENT(OUT) :: KDIM2 ! 2nd dimension 00047 ! 00048 !* 0.2 Declaration of other local variables 00049 ! ------------------------------------ 00050 ! 00051 REAL,DIMENSION(:),ALLOCATABLE :: ZX, ZY,V0 00052 INTEGER:: JX, JY, IL 00053 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00054 !---------------------------------------------------------------------------- 00055 ! 00056 IF (LHOOK) CALL DR_HOOK('GET_GRID_DIM_LONLATVAL',0,ZHOOK_HANDLE) 00057 ORECT = .TRUE. 00058 ! 00059 CALL GET_GRIDTYPE_LONLATVAL(PGRID_PAR,KL=IL) 00060 ! 00061 ALLOCATE(ZX(IL)) 00062 ALLOCATE(ZY(IL)) 00063 ALLOCATE(V0(IL)) 00064 ! 00065 CALL GET_GRIDTYPE_LONLATVAL(PGRID_PAR,PX=ZX,PY=ZY) 00066 ! 00067 V0(:)=1 00068 DO JX=1,IL 00069 IF (V0(JX)==1) THEN 00070 DO JY=1,IL 00071 IF (ZX(JX)==ZX(JY) .AND. JX.NE.JY) V0(JY)=0 00072 ENDDO 00073 ENDIF 00074 ENDDO 00075 KDIM1=SUM(V0) 00076 ! 00077 V0(:)=1 00078 DO JX=1,IL 00079 IF (V0(JX)==1) THEN 00080 DO JY=1,IL 00081 IF (ZY(JX)==ZY(JY) .AND. JX.NE.JY) V0(JY)=0 00082 ENDDO 00083 ENDIF 00084 ENDDO 00085 KDIM2=SUM(V0) 00086 ! 00087 DEALLOCATE(ZX) 00088 DEALLOCATE(ZY) 00089 DEALLOCATE(V0) 00090 IF (LHOOK) CALL DR_HOOK('GET_GRID_DIM_LONLATVAL',1,ZHOOK_HANDLE) 00091 ! 00092 !------------------------------------------------------------------------------- 00093 ! 00094 END SUBROUTINE GET_GRID_DIM_LONLATVAL