SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_seaflux_extern.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE PREP_SEAFLUX_EXTERN(HPROGRAM,HSURF,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,KLUOUT,PFIELD)
00003 !     #################################################################################
00004 !
00005 USE MODD_TYPE_DATE_SURF
00006 !
00007 USE MODI_PREP_GRID_EXTERN
00008 USE MODI_READ_SURF
00009 USE MODI_OPEN_AUX_IO_SURF
00010 USE MODI_CLOSE_AUX_IO_SURF
00011 !
00012 USE MODD_PREP,       ONLY : CINGRID_TYPE, CINTERP_TYPE
00013 !
00014 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00015 USE PARKIND1  ,ONLY : JPRB
00016 !
00017 IMPLICIT NONE
00018 !
00019 !*      0.1    declarations of arguments
00020 !
00021  CHARACTER(LEN=6),   INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00022  CHARACTER(LEN=7),   INTENT(IN)  :: HSURF     ! type of field
00023  CHARACTER(LEN=28),  INTENT(IN)  :: HFILE     ! name of file
00024  CHARACTER(LEN=6),   INTENT(IN)  :: HFILETYPE ! type of input file
00025  CHARACTER(LEN=28),  INTENT(IN)  :: HFILEPGD     ! name of file
00026  CHARACTER(LEN=6),   INTENT(IN)  :: HFILEPGDTYPE ! type of input file
00027 INTEGER,            INTENT(IN)  :: KLUOUT    ! logical unit of output listing
00028 REAL,DIMENSION(:,:), POINTER    :: PFIELD    ! field to interpolate horizontally
00029 !
00030 !*      0.2    declarations of local variables
00031 !
00032 !
00033  CHARACTER(LEN=12) :: YRECFM         ! Name of the article to be read
00034 INTEGER           :: IRESP          ! reading return code
00035 !
00036 INTEGER           :: INI            ! total 1D dimension
00037 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00038 !
00039 !-------------------------------------------------------------------------------------
00040 !
00041 !*      1.     Preparation of IO for reading in the file
00042 !              -----------------------------------------
00043 !
00044 !* Note that all points are read, even those without physical meaning.
00045 !  These points will not be used during the horizontal interpolation step.
00046 !  Their value must be defined as XUNDEF.
00047 !
00048 IF (LHOOK) CALL DR_HOOK('PREP_SEAFLUX_EXTERN',0,ZHOOK_HANDLE)
00049 !
00050 !-------------------------------------------------------------------------------------
00051 !
00052 !*      2.     Reading of grid
00053 !              ---------------
00054 !
00055  CALL OPEN_AUX_IO_SURF(HFILEPGD,HFILEPGDTYPE,'SEA   ')
00056  CALL PREP_GRID_EXTERN(HFILEPGDTYPE,KLUOUT,CINGRID_TYPE,CINTERP_TYPE,INI)
00057  CALL CLOSE_AUX_IO_SURF(HFILEPGD,HFILEPGDTYPE)
00058 !
00059 !---------------------------------------------------------------------------------------
00060 SELECT CASE(HSURF)
00061 !---------------------------------------------------------------------------------------
00062 !
00063 !*     3.      Orography
00064 !              ---------
00065 !
00066   CASE('ZS     ')
00067     ALLOCATE(PFIELD(INI,1))
00068     PFIELD(:,:) = 0.
00069 !
00070 !*      4.  Sea surface temperature
00071 !           -----------------------
00072 !
00073   CASE('SST    ')
00074     ALLOCATE(PFIELD(INI,1))
00075     YRECFM='SST'
00076     CALL OPEN_AUX_IO_SURF(HFILE,HFILETYPE,'SEA   ')
00077     CALL READ_SURF(HFILETYPE,YRECFM,PFIELD(:,1),IRESP,HDIR='A')
00078     CALL CLOSE_AUX_IO_SURF(HFILE,HFILETYPE)
00079 !
00080 !---------------------------------------------------------------------------------------
00081 END SELECT
00082 !-------------------------------------------------------------------------------------
00083 !
00084 !*      6.     End of IO
00085 !              ---------
00086 !
00087 IF (LHOOK) CALL DR_HOOK('PREP_SEAFLUX_EXTERN',1,ZHOOK_HANDLE)
00088 !
00089 !---------------------------------------------------------------------------------------
00090 !
00091 END SUBROUTINE PREP_SEAFLUX_EXTERN