SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_NAM_GRID_TRIP(HPROGRAM) 00003 !###################################### 00004 ! 00005 !!**** *READ_NAM_GRID_TRIP* - routine to read in namelist the TRIP horizontal grid 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 !! B. Decharme *Meteo France* 00027 !! 00028 !! MODIFICATIONS 00029 !! ------------- 00030 !! Original 05/2008 00031 !------------------------------------------------------------------------------- 00032 ! 00033 !* 0. DECLARATIONS 00034 ! ------------ 00035 ! 00036 USE MODE_POS_SURF 00037 USE MODD_TRIP_GRID_n, ONLY : XGRID_TRIP 00038 ! 00039 USE MODI_OPEN_NAMELIST 00040 USE MODI_CLOSE_NAMELIST 00041 USE MODI_GET_LUOUT 00042 ! 00043 USE MODE_GRID_TRIP 00044 ! 00045 ! 00046 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00047 USE PARKIND1 ,ONLY : JPRB 00048 ! 00049 IMPLICIT NONE 00050 ! 00051 !* 0.1 Declarations of arguments 00052 ! ------------------------- 00053 ! 00054 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program 00055 ! 00056 !* 0.2 Declarations of local variables 00057 ! ------------------------------- 00058 ! 00059 INTEGER :: ILUOUT ! output listing logical unit 00060 INTEGER :: ILUNAM ! namelist file logical unit 00061 INTEGER :: I 00062 LOGICAL :: GFOUND 00063 REAL :: ZWORK 00064 ! 00065 ! 00066 !* 0.3 Declarations of namelist 00067 ! ------------------------ 00068 ! 00069 REAL :: TLONMIN ! minimum longitude (degrees) 00070 REAL :: TLONMAX ! maximum longitude (degrees) 00071 REAL :: TLATMIN ! minimum latitude (degrees) 00072 REAL :: TLATMAX ! maximum latitude (degrees) 00073 REAL :: TRES ! 1° or 0.5° resolution 00074 ! 00075 REAL, DIMENSION(:), ALLOCATABLE :: ZLON 00076 REAL, DIMENSION(:), ALLOCATABLE :: ZLAT 00077 ! 00078 INTEGER :: ILON,ILAT 00079 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00080 ! 00081 NAMELIST/NAM_GRID_TRIP/TLONMIN, TLONMAX, TLATMIN, TLATMAX, TRES 00082 ! 00083 !------------------------------------------------------------------------------ 00084 ! 00085 !* 1. opening of namelist 00086 ! 00087 IF (LHOOK) CALL DR_HOOK('READ_NAM_GRID_TRIP',0,ZHOOK_HANDLE) 00088 CALL GET_LUOUT(HPROGRAM,ILUOUT) 00089 ! 00090 CALL OPEN_NAMELIST(HPROGRAM,ILUNAM) 00091 ! 00092 !--------------------------------------------------------------------------- 00093 ! 00094 !* 2. Reading of projection parameters 00095 ! -------------------------------- 00096 ! 00097 CALL POSNAM(ILUNAM,'NAM_GRID_TRIP',GFOUND,ILUOUT) 00098 IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_GRID_TRIP) 00099 ! 00100 CALL CLOSE_NAMELIST(HPROGRAM,ILUNAM) 00101 ! 00102 IF(TRES/=0.5.AND.TRES/=1.0.AND.TRES/=0.1)THEN 00103 WRITE(ILUOUT,*)'Error : The resolution of the TRIP grid must be 1° or 0.5°' 00104 WRITE(ILUOUT,*)' or 0.1° over France ' 00105 WRITE(ILUOUT,*)' In NAM_GRID_TRIP, TRES should be 0.1 or 0.5 or 1. ' 00106 STOP 00107 ENDIF 00108 ! 00109 !--------------------------------------------------------------------------- 00110 ! 00111 !* 3. Number of lattitude and longitude 00112 ! 00113 ILON = INT((TLONMAX-TLONMIN)/TRES) 00114 ILAT = INT((TLATMAX-TLATMIN)/TRES) 00115 ! 00116 !--------------------------------------------------------------------------- 00117 ! 00118 !* 4. lattitude and longitude values 00119 ! 00120 ALLOCATE(ZLON(ILON)) 00121 ALLOCATE(ZLAT(ILAT)) 00122 ! 00123 ZWORK = TLONMIN-(TRES/2.) 00124 DO I=1,ILON 00125 ZWORK = ZWORK + TRES 00126 ZLON(I) = ZWORK 00127 ENDDO 00128 ! 00129 ZWORK =TLATMIN-(TRES/2.) 00130 DO I=1,ILAT 00131 ZWORK = ZWORK + TRES 00132 ZLAT(I) = ZWORK 00133 ENDDO 00134 ! 00135 !--------------------------------------------------------------------------- 00136 ! 00137 !* 5. All this information stored into PGRID_TRIP 00138 ! ------------------------------------------- 00139 ! 00140 ALLOCATE(XGRID_TRIP(7+ILON+ILAT)) 00141 XGRID_TRIP(:) = 0.0 00142 ! 00143 CALL PUT_GRID_TRIP(XGRID_TRIP,TLONMIN,TLONMAX,TLATMIN,TLATMAX,TRES,ILON,ILAT,ZLON,ZLAT) 00144 ! 00145 DEALLOCATE(ZLON) 00146 DEALLOCATE(ZLAT) 00147 IF (LHOOK) CALL DR_HOOK('READ_NAM_GRID_TRIP',1,ZHOOK_HANDLE) 00148 ! 00149 !--------------------------------------------------------------------------- 00150 ! 00151 END SUBROUTINE READ_NAM_GRID_TRIP