SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/put_in_time.F90
Go to the documentation of this file.
00001 SUBROUTINE PUT_IN_TIME(NTIME1,NTIME2,PDATA)
00002 
00003 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00004 USE PARKIND1  ,ONLY : JPRB
00005 
00006 USE MODI_ABOR1_SFX
00007 
00008 IMPLICIT NONE
00009 
00010 INTEGER, INTENT(IN) :: NTIME1
00011 INTEGER, INTENT(IN) :: NTIME2
00012 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PDATA
00013 
00014 INTEGER :: I1, I2, JJ, JTIME
00015 REAL, DIMENSION(SIZE(PDATA,1),NTIME1,SIZE(PDATA,3)) :: ZDATA
00016 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00017 
00018 IF (LHOOK) CALL DR_HOOK('PUT_IN_TIME',0,ZHOOK_HANDLE)
00019 
00020 IF (NTIME1.LE.0 .OR. NTIME1.GT.NTIME2) THEN
00021   CALL ABOR1_SFX("PUT_IN_TIME: NTIME1 MUST BE <= NTIME2 AND > 0")
00022 ELSEIF (NTIME1==NTIME2) THEN
00023   IF (LHOOK) CALL DR_HOOK('PUT_IN_TIME',1,ZHOOK_HANDLE)
00024   RETURN
00025 ELSEIF (NTIME1==1) THEN
00026   DO JJ=2,NTIME2
00027     PDATA(:,JJ,:)=PDATA(:,1,:)
00028   ENDDO
00029 ELSEIF (NTIME1==2) THEN !2 values: winter and summer
00030   IF (NTIME2.NE.36) CALL ABOR1_SFX("PUT_IN_TIME: WITH NTIME1=2, NTIME2 MUST BE =36 (WINTER AND SUMMER VALUES)")
00031   ZDATA=PDATA(:,1:2,:)
00032   DO JJ=1,8
00033     PDATA(:,JJ,:)=ZDATA(:,1,:)  !until 20 march
00034   ENDDO
00035   DO JJ=9,26
00036     PDATA(:,JJ,:)=ZDATA(:,2,:) !from 21 march to 20 september
00037   ENDDO
00038   DO JJ=27,36
00039     PDATA(:,JJ,:)=ZDATA(:,1,:) !from 21 september to 31 december
00040   ENDDO
00041 ELSE
00042   I1=NTIME2/NTIME1
00043   I2=NTIME2/I1  
00044   IF (I2.NE.NTIME1) CALL ABOR1_SFX("PUT_INT_TIME: NTIME2 MUST BE A MULTIPLE OF NTIME1")
00045   ZDATA=PDATA(:,1:NTIME1,:)
00046   DO JTIME=1,NTIME1
00047     DO JJ=(JTIME-1)*I1+1,JTIME*I1
00048       PDATA(:,JJ,:)=ZDATA(:,JTIME,:)
00049     ENDDO
00050   ENDDO
00051 ENDIF
00052 
00053 IF (LHOOK) CALL DR_HOOK('PUT_IN_TIME',1,ZHOOK_HANDLE)
00054 
00055 END SUBROUTINE PUT_IN_TIME