SURFEX v7.3
General documentation of Surfex
|
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