SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/grid_from_file.F90
Go to the documentation of this file.
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