SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_PGD_SEAFLUX_PAR_n(HPROGRAM,KSIZE,HDIR) 00003 ! ################################################ 00004 ! 00005 !!**** *READ_PGD_SEAFLUX_PAR_n* - reads SEAFLUX sst 00006 !! 00007 !! 00008 !! PURPOSE 00009 !! ------- 00010 !! 00011 !!** METHOD 00012 !! ------ 00013 !! 00014 !! EXTERNAL 00015 !! -------- 00016 !! 00017 !! 00018 !! IMPLICIT ARGUMENTS 00019 !! ------------------ 00020 !! 00021 !! REFERENCE 00022 !! --------- 00023 !! 00024 !! 00025 !! AUTHOR 00026 !! ------ 00027 !! P. Le Moigne *Meteo France* 00028 !! 00029 !! MODIFICATIONS 00030 !! ------------- 00031 !! Original 09/2007 00032 !------------------------------------------------------------------------------- 00033 ! 00034 !* 0. DECLARATIONS 00035 ! ------------ 00036 ! 00037 USE MODD_SEAFLUX_GRID_n, ONLY : NDIM 00038 USE MODD_TYPE_DATE_SURF 00039 USE MODD_DATA_SEAFLUX_n, ONLY : NTIME, XDATA_SST, TDATA_SST 00040 USE MODD_PREP, ONLY : LINTERP 00041 ! 00042 USE MODI_GET_LUOUT 00043 USE MODI_READ_SURF 00044 USE MODI_HOR_INTERPOL 00045 ! 00046 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00047 USE PARKIND1 ,ONLY : JPRB 00048 ! 00049 IMPLICIT NONE 00050 ! 00051 !* 0.1 Declarations of arguments 00052 ! ------------------------- 00053 ! 00054 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling 00055 INTEGER, INTENT(IN) :: KSIZE 00056 CHARACTER(LEN=1),OPTIONAL,INTENT(IN) :: HDIR ! type of field : 00057 ! ! 'H' : field with 00058 ! ! horizontal spatial dim. 00059 ! ! '-' : no horizontal dim. 00060 ! 00061 !* 0.2 Declarations of local variables 00062 ! ------------------------------- 00063 ! 00064 REAL, DIMENSION(:,:), ALLOCATABLE :: ZDATA_SST 00065 CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read 00066 CHARACTER(LEN=100):: YCOMMENT ! Comment string 00067 CHARACTER(LEN=1) :: YDIR 00068 INTEGER :: ILUOUT 00069 INTEGER :: IRESP ! IRESP : return-code if a problem appears 00070 INTEGER :: JTIME ! loop index 00071 INTEGER :: IVERSION, IBUGFIX 00072 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00073 !------------------------------------------------------------------------------- 00074 ! 00075 IF (LHOOK) CALL DR_HOOK('READ_PGD_SEAFLUX_PAR_N',0,ZHOOK_HANDLE) 00076 ! 00077 CALL GET_LUOUT(HPROGRAM,ILUOUT) 00078 ! 00079 YDIR = 'H' 00080 IF (PRESENT(HDIR)) YDIR = HDIR 00081 ! 00082 YRECFM='VERSION' 00083 CALL READ_SURF(HPROGRAM,YRECFM,IVERSION,IRESP) 00084 ! 00085 YRECFM='BUG' 00086 CALL READ_SURF(HPROGRAM,YRECFM,IBUGFIX,IRESP) 00087 ! 00088 IF (IVERSION<4 .OR. IVERSION==4 .AND. IBUGFIX<=4 .OR. & 00089 IVERSION>5 .OR. IVERSION==5 .AND. IBUGFIX>=1) THEN 00090 YRECFM='ND_SEA_TIME' 00091 ELSE 00092 YRECFM='NDATA_SEA_TIME' 00093 ENDIF 00094 CALL READ_SURF(HPROGRAM,YRECFM,NTIME,IRESP,HCOMMENT=YCOMMENT) 00095 ! 00096 ALLOCATE(ZDATA_SST (KSIZE,NTIME)) 00097 DO JTIME=1,NTIME 00098 ! 00099 IF (IVERSION>5 .OR. IVERSION==5 .AND. IBUGFIX>=1) THEN 00100 WRITE(YRECFM,FMT='(A7,I3.3)') 'D_SST_T',JTIME 00101 ELSEIF (IVERSION<4 .OR. IVERSION==4 .AND. IBUGFIX<=4) THEN 00102 WRITE(YRECFM,FMT='(A9,I3.3)') 'DATA_SST_',JTIME 00103 ELSE 00104 WRITE(YRECFM,FMT='(A10,I3.3)') 'DATA_SST_T',JTIME 00105 ENDIF 00106 ! 00107 CALL READ_SURF(HPROGRAM,YRECFM,ZDATA_SST(:,JTIME),IRESP,& 00108 HCOMMENT=YCOMMENT,HDIR=YDIR) 00109 ! 00110 END DO 00111 ! 00112 ALLOCATE(XDATA_SST(NDIM,NTIME)) 00113 IF (NDIM/=KSIZE) THEN 00114 LINTERP(:) = .TRUE. 00115 DO JTIME=1,NTIME 00116 CALL HOR_INTERPOL(ILUOUT,ZDATA_SST(:,JTIME:JTIME),XDATA_SST(:,JTIME:JTIME)) 00117 ENDDO 00118 DEALLOCATE(ZDATA_SST) 00119 ELSE 00120 XDATA_SST(:,:) = ZDATA_SST(:,:) 00121 ENDIF 00122 ! 00123 ALLOCATE(TDATA_SST (NTIME)) 00124 ! 00125 IF (IVERSION<4 .OR. IVERSION==4 .AND. IBUGFIX<=4) THEN 00126 DO JTIME=1,NTIME 00127 WRITE(YRECFM,FMT='(A7,I3.3)') 'DTA_SST',JTIME 00128 YCOMMENT='(-)' 00129 CALL READ_SURF(HPROGRAM,YRECFM,TDATA_SST,IRESP,HCOMMENT=YCOMMENT) 00130 END DO 00131 ELSE 00132 YRECFM='TDATA_SST' 00133 YCOMMENT='(-)' 00134 CALL READ_SURF(HPROGRAM,YRECFM,TDATA_SST,IRESP,HCOMMENT=YCOMMENT) 00135 ENDIF 00136 ! 00137 IF (LHOOK) CALL DR_HOOK('READ_PGD_SEAFLUX_PAR_N',1,ZHOOK_HANDLE) 00138 !------------------------------------------------------------------------------- 00139 END SUBROUTINE READ_PGD_SEAFLUX_PAR_n