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