1 !SURFEX_LIC Copyright 1994-2014 Meteo-France
2 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SURFEX_LIC for details. version 1.
6 SUBROUTINE PREP_WATFLUX_EXTERN(HPROGRAM,HSURF,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,KLUOUT,PFIELD)
7 ! #################################################################################
9 USE MODD_TYPE_DATE_SURF
11 USE MODI_PREP_GRID_EXTERN
13 USE MODI_OPEN_AUX_IO_SURF
14 USE MODI_CLOSE_AUX_IO_SURF
18 USE MODD_PREP, ONLY : CINGRID_TYPE, CINTERP_TYPE
20 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
21 USE PARKIND1 ,ONLY : JPRB
25 !* 0.1 declarations of arguments
27 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
28 CHARACTER(LEN=7), INTENT(IN) :: HSURF ! type of field
29 CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of file
30 CHARACTER(LEN=6), INTENT(IN) :: HFILETYPE ! type of input file
31 CHARACTER(LEN=28), INTENT(IN) :: HFILEPGD ! name of file
32 CHARACTER(LEN=6), INTENT(IN) :: HFILEPGDTYPE ! type of input file
33 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing
34 REAL,DIMENSION(:,:), POINTER :: PFIELD ! field to interpolate horizontally
36 !* 0.2 declarations of local variables
39 CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read
40 INTEGER :: IRESP ! reading return code
44 INTEGER :: INI ! total 1D dimension
45 REAL(KIND=JPRB) :: ZHOOK_HANDLE
47 !-------------------------------------------------------------------------------------
49 !* 1. Preparation of IO for reading in the file
50 ! -----------------------------------------
52 !* Note that all points are read, even those without physical meaning.
53 ! These points will not be used during the horizontal interpolation step.
54 ! Their value must be defined as XUNDEF.
56 IF (LHOOK) CALL DR_HOOK('PREP_WATFLUX_EXTERN',0,ZHOOK_HANDLE)
58 !-------------------------------------------------------------------------------------
63 CALL OPEN_AUX_IO_SURF(HFILEPGD,HFILEPGDTYPE,'WATER ')
64 CALL PREP_GRID_EXTERN(HFILEPGDTYPE,KLUOUT,CINGRID_TYPE,CINTERP_TYPE,INI)
66 CALL READ_SURF(HFILEPGDTYPE,'DIM_WATER',IDIM_WATER,IRESP)
68 IF (IDIM_WATER==0) THEN
69 CALL GET_LUOUT(HPROGRAM,ILUOUT)
71 WRITE(ILUOUT,*) 'No inland water data available in input file ',HFILE
72 WRITE(ILUOUT,*) 'Please change your input file '
73 WRITE(ILUOUT,*) ' or '
74 WRITE(ILUOUT,*) 'specify inland water temperature XTS_WATER_UNIF'
75 CALL ABOR1_SFX('PREP_WATFLUX_EXTERN: No inland water data available in input file')
77 !---------------------------------------------------------------------------------------
79 !---------------------------------------------------------------------------------------
85 ALLOCATE(PFIELD(INI,1))
87 CALL READ_SURF(HFILEPGDTYPE,YRECFM,PFIELD(:,1),IRESP,HDIR='A')
88 CALL CLOSE_AUX_IO_SURF(HFILEPGD,HFILEPGDTYPE)
90 !* 4. Sea surface temperature
91 ! -----------------------
94 ALLOCATE(PFIELD(INI,1))
96 CALL CLOSE_AUX_IO_SURF(HFILEPGD,HFILEPGDTYPE)
97 CALL OPEN_AUX_IO_SURF(HFILE,HFILETYPE,'WATER ')
98 CALL READ_SURF(HFILETYPE,YRECFM,PFIELD(:,1),IRESP,HDIR='A')
99 CALL CLOSE_AUX_IO_SURF(HFILE,HFILETYPE)
101 !---------------------------------------------------------------------------------------
103 !-------------------------------------------------------------------------------------
108 IF (LHOOK) CALL DR_HOOK('PREP_WATFLUX_EXTERN',1,ZHOOK_HANDLE)
110 !---------------------------------------------------------------------------------------
112 END SUBROUTINE PREP_WATFLUX_EXTERN