SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE GRID_FROM_FILE(HPROGRAM,HFILE,HFILETYPE,OGRID,HGRID,KGRID_PAR,PGRID_PAR,KL) 00003 ! ########################################################## 00004 !! 00005 !! PURPOSE 00006 !! ------- 00007 !! Reads in namelist the grid type and parameters. 00008 !! 00009 !! METHOD 00010 !! ------ 00011 !! 00012 !! EXTERNAL 00013 !! -------- 00014 !! 00015 !! 00016 !! IMPLICIT ARGUMENTS 00017 !! ------------------ 00018 !! 00019 !! 00020 !! REFERENCE 00021 !! --------- 00022 !! 00023 !! AUTHOR 00024 !! ------ 00025 !! 00026 !! V. Masson Meteo-France 00027 !! 00028 !! MODIFICATION 00029 !! ------------ 00030 !! 00031 !! Original 01/2004 00032 !---------------------------------------------------------------------------- 00033 ! 00034 !* 0. DECLARATION 00035 ! ----------- 00036 ! 00037 USE MODI_OPEN_AUX_IO_SURF 00038 USE MODI_READ_GRIDTYPE 00039 USE MODI_CLOSE_AUX_IO_SURF 00040 USE MODI_READ_SURF 00041 USE MODI_OPEN_NAMELIST 00042 USE MODI_CLOSE_NAMELIST 00043 USE MODI_GRID_MODIF 00044 ! 00045 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00046 USE PARKIND1 ,ONLY : JPRB 00047 ! 00048 USE MODI_GET_LUOUT 00049 IMPLICIT NONE 00050 ! 00051 !* 0.1 Declaration of dummy arguments 00052 ! ------------------------------ 00053 ! 00054 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling the surface 00055 CHARACTER(LEN=28), INTENT(IN) :: HFILE ! file name 00056 CHARACTER(LEN=6), INTENT(IN) :: HFILETYPE ! file type 00057 LOGICAL, INTENT(IN) :: OGRID ! .true. if grid is imposed by atm. model 00058 CHARACTER(LEN=10), INTENT(OUT) :: HGRID ! type of horizontal grid 00059 INTEGER, INTENT(OUT) :: KGRID_PAR ! size of PGRID_PAR 00060 REAL, DIMENSION(:), POINTER :: PGRID_PAR ! parameters defining this grid 00061 INTEGER, INTENT(OUT) :: KL ! number of points on processor 00062 ! 00063 ! 00064 !* 0.2 Declaration of local variables 00065 ! ------------------------------ 00066 ! 00067 INTEGER :: ILUOUT ! listing file logical unit 00068 INTEGER :: ILUNAM ! namelist file logical unit 00069 INTEGER :: IRESP ! return code 00070 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00071 ! 00072 !* 0.3 Declaration of namelists 00073 ! ------------------------ 00074 ! 00075 !------------------------------------------------------------------------------ 00076 ! 00077 !* 1. Defaults 00078 ! -------- 00079 ! 00080 IF (LHOOK) CALL DR_HOOK('GRID_FROM_FILE',0,ZHOOK_HANDLE) 00081 CALL GET_LUOUT(HPROGRAM,ILUOUT) 00082 ! 00083 !--------------------------------------------------------------------------- 00084 ! 00085 !* 2. Opening of the file 00086 ! ------------------- 00087 ! 00088 CALL OPEN_AUX_IO_SURF(HFILE,HFILETYPE,'FULL ') 00089 ! 00090 !--------------------------------------------------------------------------- 00091 ! 00092 !* 3. Number of points in this file 00093 ! ----------------------------- 00094 ! 00095 CALL READ_SURF(HFILETYPE,'DIM_FULL ',KL,IRESP) 00096 ! 00097 !--------------------------------------------------------------------------- 00098 ! 00099 !* 4. Grid type 00100 ! --------- 00101 ! 00102 CALL READ_SURF(HFILETYPE,'GRID_TYPE',HGRID,IRESP) 00103 ! 00104 !--------------------------------------------------------------------------- 00105 ! 00106 !* 5. Reading parameters of the grid 00107 ! ------------------------------ 00108 ! 00109 CALL READ_GRIDTYPE(HFILETYPE,HGRID,KGRID_PAR,KL,.FALSE.,HDIR='A') 00110 ! 00111 ALLOCATE(PGRID_PAR(KGRID_PAR)) 00112 CALL READ_GRIDTYPE(HFILETYPE,HGRID,KGRID_PAR,KL,.TRUE.,PGRID_PAR,IRESP,HDIR='A') 00113 ! 00114 !--------------------------------------------------------------------------- 00115 ! 00116 !* 6. Closes the file 00117 ! --------------- 00118 ! 00119 CALL CLOSE_AUX_IO_SURF(HFILE,HFILETYPE) 00120 ! 00121 !------------------------------------------------------------------------------ 00122 ! 00123 !* 7. Open namelist 00124 ! ------------- 00125 ! 00126 CALL OPEN_NAMELIST(HPROGRAM,ILUNAM) 00127 ! 00128 !------------------------------------------------------------------------------ 00129 ! 00130 !* 8. Grid modification 00131 ! ----------------- 00132 ! 00133 IF (.NOT. OGRID) CALL GRID_MODIF(ILUOUT,ILUNAM,HGRID,KGRID_PAR,PGRID_PAR,KL) 00134 ! 00135 !------------------------------------------------------------------------------ 00136 ! 00137 !* 9. Close namelist 00138 ! -------------- 00139 ! 00140 CALL CLOSE_NAMELIST(HPROGRAM,ILUNAM) 00141 IF (LHOOK) CALL DR_HOOK('GRID_FROM_FILE',1,ZHOOK_HANDLE) 00142 ! 00143 !------------------------------------------------------------------------------- 00144 ! 00145 END SUBROUTINE GRID_FROM_FILE