Skip to content
Snippets Groups Projects
Commit 35c77db0 authored by Gaelle Tanguy's avatar Gaelle Tanguy Committed by WAUTELET Philippe
Browse files

G. TANGUY 19/05/2014 : correctoin DATIME in case of time average

parent ccc174de
Branches
Tags
No related merge requests found
......@@ -7,6 +7,9 @@
!-----------------------------------------------------------------
! $Source$ $Revision$
! MASDEV4_7 mode 2006/09/13 10:17:42
!
! Modifications
! G. TANGUY 19/05/2014 : correctoin DATIME in case of time average
!-----------------------------------------------------------------
!#######################
MODULE MODE_LES_DIACHRO
......@@ -597,15 +600,18 @@ END SUBROUTINE LES_Z_NORM
!------------------------------------------------------------------------------
!
!########################################################
SUBROUTINE LES_TIME_AVG(PTRAJT,PWORK6,KRESP)
SUBROUTINE LES_TIME_AVG(PTRAJT,PWORK6,KRESP,PDATIME_AVG)
!########################################################
!
! this routine computes time averaging
!
USE MODD_LES
USE MODI_ADD_FORECAST_TO_DATE
!
IMPLICIT NONE
!
REAL, DIMENSION(:,:), POINTER :: PTRAJT ! time
REAL, DIMENSION(:,:), POINTER :: PDATIME_AVG ! date
REAL, DIMENSION(:,:,:,:,:,:), POINTER :: PWORK6 ! contains physical field
INTEGER, INTENT(OUT) :: KRESP ! return code (0 is OK)
!------------------------------------------------------------------------------
......@@ -621,6 +627,11 @@ INTEGER :: JP ! process loop counter
INTEGER :: JSV ! scalar loop counter
INTEGER :: JX ! first spatial or spectral coordinate loop counter
INTEGER :: JY ! second spatial or spectral coordinate loop counter
REAL, DIMENSION(16) :: ZDATIME_SAVE ! date
INTEGER :: IYEAR,IMONTH,IDAY
REAL :: ZTIME,ZTIME2
INTEGER :: JDAY
INTEGER :: JJ
!------------------------------------------------------------------------------
!
IF ( XLES_TEMP_MEAN_END==XUNDEF &
......@@ -636,13 +647,29 @@ IF (IAVG<=0) THEN
RETURN
END IF
!
ZDATIME_SAVE(:)=PDATIME_AVG(:,1)
DEALLOCATE(PTRAJT)
DEALLOCATE(PDATIME_AVG)
!
ALLOCATE (PTRAJT(IAVG,1))
ALLOCATE (PDATIME_AVG(16,IAVG))
ALLOCATE (ZWORK6(SIZE(PWORK6,1),SIZE(PWORK6,2),NLES_K,IAVG,SIZE(PWORK6,5),SIZE(PWORK6,6)))
!
ZWORK6(:,:,:,:,:,:) = 0.
!
PDATIME_AVG(1,:)=ZDATIME_SAVE(1)
PDATIME_AVG(2,:)=ZDATIME_SAVE(2)
PDATIME_AVG(3,:)=ZDATIME_SAVE(3)
PDATIME_AVG(4,:)=ZDATIME_SAVE(4)
PDATIME_AVG(5,:)=ZDATIME_SAVE(5)
PDATIME_AVG(6,:)=ZDATIME_SAVE(6)
PDATIME_AVG(7,:)=ZDATIME_SAVE(7)
PDATIME_AVG(8,:)=ZDATIME_SAVE(8)
PDATIME_AVG(9,:)=ZDATIME_SAVE(9)
PDATIME_AVG(10,:)=ZDATIME_SAVE(10)
PDATIME_AVG(11,:)=ZDATIME_SAVE(11)
PDATIME_AVG(12,:)=ZDATIME_SAVE(12)
!
DO JAVG=1,IAVG
ZLES_TEMP_MEAN_START=XLES_TEMP_MEAN_START + (JAVG-1) * XLES_TEMP_MEAN_STEP
ZLES_TEMP_MEAN_END =MIN(XLES_TEMP_MEAN_END, ZLES_TEMP_MEAN_START + XLES_TEMP_MEAN_STEP)
......@@ -676,8 +703,25 @@ DO JAVG=1,IAVG
END DO
END DO
PTRAJT(JAVG,1)=(ZLES_TEMP_MEAN_START+ZLES_TEMP_MEAN_END)/2.
IYEAR=PDATIME_AVG(5,JAVG)
IMONTH=PDATIME_AVG(6,JAVG)
IDAY=PDATIME_AVG(7,JAVG)
ZTIME=PDATIME_AVG(8,JAVG)+PTRAJT(JAVG,1)
JDAY=NINT(ZTIME/86400.)
IF (JDAY .GT. 0) THEN
DO JJ=1,JDAY
ZTIME2=86400.
CALL ADD_FORECAST_TO_DATE(IYEAR,IMONTH,IDAY,ZTIME2)
ZTIME=ZTIME-ZTIME2
ENDDO
ENDIF
CALL ADD_FORECAST_TO_DATE(IYEAR,IMONTH,IDAY,ZTIME)
PDATIME_AVG(13,JAVG)=IYEAR
PDATIME_AVG(14,JAVG)=IMONTH
PDATIME_AVG(15,JAVG)=IDAY
PDATIME_AVG(16,JAVG)=ZTIME
END DO
!
DEALLOCATE(PWORK6)
ALLOCATE(PWORK6(SIZE(ZWORK6,1),SIZE(ZWORK6,2),NLES_K,IAVG,SIZE(ZWORK6,5),SIZE(ZWORK6,6)))
PWORK6 = ZWORK6
......@@ -713,6 +757,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJX ! localization of the temporal
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJY ! series in x,y and z. remark:
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJZ ! x and y are not used for LES
REAL, DIMENSION(:,:), POINTER :: ZTRAJT ! time
REAL, DIMENSION(:,:), POINTER :: ZDATIME ! date
!
INTEGER, DIMENSION(1) :: IGRID ! grid indicator
CHARACTER(LEN= 10) :: YGROUP ! group title
......@@ -752,6 +797,7 @@ ALLOCATE (ZTRAJZ(NLES_K,1,1))
!
ALLOCATE(ZWORK6(1,1,NLES_K,NLES_CURRENT_TIMES,1,1))
ALLOCATE(ZTRAJT(NLES_CURRENT_TIMES,1))
ALLOCATE(ZDATIME(16,NLES_CURRENT_TIMES))
!
IIL = NLES_CURRENT_IINF
IIH = NLES_CURRENT_ISUP
......@@ -772,6 +818,7 @@ YGROUP = HGROUP
!
ZWORK6(1,1,:,:,1,1) = ZFIELD (:,:)
ZTRAJT(:,:) = XLES_CURRENT_TRAJT(:,:)
ZDATIME(:,:)=XLES_CURRENT_DATIME(:,:)
!
!* normalization of vertical dimension
!
......@@ -783,7 +830,7 @@ END IF
!* time average
!
IRESP = 0
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP)
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME)
!
IF (HAVG/=' ') YGROUP=HAVG//'_'//YGROUP
YTITLE(1) = YGROUP
......@@ -792,7 +839,7 @@ YTITLE(1) = YGROUP
! ----------------------
!
IF (IRESP==0 .AND. ANY(ZWORK6/=XUNDEF)) &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH, &
PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ )
......@@ -806,6 +853,7 @@ DEALLOCATE (ZTRAJY)
DEALLOCATE (ZTRAJZ)
DEALLOCATE (ZTRAJT)
DEALLOCATE (ZWORK6)
DEALLOCATE (ZDATIME)
!
!-------------------------------------------------------------------------------
END SUBROUTINE LES_DIACHRO
......@@ -835,6 +883,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJX ! localization of the temporal
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJY ! series in x,y and z. remark:
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJZ ! x and y are not used for LES
REAL, DIMENSION(:,:), POINTER :: ZTRAJT ! time
REAL, DIMENSION(:,:), POINTER :: ZDATIME ! date
!
INTEGER, DIMENSION(1) :: IGRID ! grid indicator
CHARACTER(LEN= 10) :: YGROUP ! group title
......@@ -873,6 +922,7 @@ ALLOCATE (ZTRAJY(1,1,SIZE(PFIELD,3)))
ALLOCATE (ZTRAJZ(NLES_K,1,SIZE(PFIELD,3)))
ALLOCATE(ZWORK6(1,1,NLES_K,NLES_CURRENT_TIMES,SIZE(PFIELD,3),1))
ALLOCATE(ZTRAJT(NLES_CURRENT_TIMES,1))
ALLOCATE(ZDATIME(16,NLES_CURRENT_TIMES))
!
IIL = NLES_CURRENT_IINF
IIH = NLES_CURRENT_ISUP
......@@ -893,6 +943,7 @@ YGROUP = HGROUP
!
ZWORK6(1,1,:,:,:,1) = ZFIELD (:,:,:)
ZTRAJT(:,:) = XLES_CURRENT_TRAJT(:,:)
ZDATIME(:,:)=XLES_CURRENT_DATIME(:,:)
!
IF (GNORM) THEN
IF (HUNIT(1:1)/=' ') YUNIT='-'
......@@ -902,7 +953,7 @@ END IF
!* time average
!
IRESP = 0
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP)
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME)
!
IF (HAVG/=' ') YGROUP=HAVG//'_'//YGROUP
YTITLE(1) = YGROUP
......@@ -912,7 +963,7 @@ YTITLE(1) = YGROUP
!
!
IF (IRESP==0 .AND. ANY(ZWORK6/=XUNDEF)) &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH, &
PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ )
......@@ -926,6 +977,7 @@ DEALLOCATE (ZTRAJY)
DEALLOCATE (ZTRAJZ)
DEALLOCATE (ZTRAJT)
DEALLOCATE(ZWORK6)
DEALLOCATE(ZDATIME)
!
!-------------------------------------------------------------------------------
END SUBROUTINE LES_DIACHRO_SV
......@@ -956,6 +1008,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJX ! localization of the temporal
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJY ! series in x,y and z. remark:
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJZ ! x and y are not used for LES
REAL, DIMENSION(:,:), POINTER :: ZTRAJT ! time
REAL, DIMENSION(:,:), POINTER :: ZDATIME ! date
!
INTEGER, DIMENSION(SIZE(PFIELD,3)) :: IGRID ! grid indicator
CHARACTER(LEN= 10) :: YGROUP ! group title
......@@ -994,6 +1047,8 @@ ALLOCATE (ZTRAJY(1,1,1))
ALLOCATE (ZTRAJZ(NLES_K,1,1))
ALLOCATE(ZWORK6(1,1,NLES_K,NLES_CURRENT_TIMES,1,SIZE(PFIELD,3)))
ALLOCATE(ZTRAJT(NLES_CURRENT_TIMES,1))
ALLOCATE(ZDATIME(16,NLES_CURRENT_TIMES))
!
IIL = NLES_CURRENT_IINF
IIH = NLES_CURRENT_ISUP
......@@ -1015,6 +1070,8 @@ YGROUP = HGROUP
!
ZWORK6(1,1,:,:,1,:) = ZFIELD (:,:,:)
ZTRAJT(:,:) = XLES_CURRENT_TRAJT(:,:)
ZDATIME(:,:)= XLES_CURRENT_DATIME(:,:)
!
IF (GNORM) THEN
IF (HUNIT(1:1)/=' ') YUNIT='-'
......@@ -1025,7 +1082,7 @@ END IF
!* time average
!
IRESP = 0
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP)
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME)
!
IF (HAVG/=' ') YGROUP=HAVG//'_'//YGROUP
YTITLE (:) = YGROUP//HTITLE(:)
......@@ -1035,7 +1092,7 @@ YTITLE (:) = YGROUP//HTITLE(:)
! ----------------------
!
IF (IRESP==0 .AND. ANY(ZWORK6/=XUNDEF)) &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH, &
PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ )
......@@ -1049,6 +1106,7 @@ DEALLOCATE (ZTRAJY)
DEALLOCATE (ZTRAJZ)
DEALLOCATE (ZTRAJT)
DEALLOCATE(ZWORK6)
DEALLOCATE(ZDATIME)
!
!-------------------------------------------------------------------------------
END SUBROUTINE LES_DIACHRO_MASKS
......@@ -1079,6 +1137,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJX ! localization of the temporal
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJY ! series in x,y and z. remark:
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJZ ! x and y are not used for LES
REAL, DIMENSION(:,:), POINTER :: ZTRAJT ! time
REAL, DIMENSION(:,:), POINTER :: ZDATIME! date
!
INTEGER, DIMENSION(SIZE(PFIELD,3)) :: IGRID ! grid indicator
CHARACTER(LEN= 10) :: YGROUP ! group title
......@@ -1119,6 +1178,7 @@ ALLOCATE (ZTRAJY(1,1,SIZE(PFIELD,4)))
ALLOCATE (ZTRAJZ(NLES_K,1,SIZE(PFIELD,4)))
ALLOCATE(ZWORK6(1,1,NLES_K,NLES_CURRENT_TIMES,SIZE(PFIELD,4),SIZE(PFIELD,3)))
ALLOCATE(ZTRAJT(NLES_CURRENT_TIMES,1))
ALLOCATE(ZDATIME(16,NLES_CURRENT_TIMES))
!
IIL = NLES_CURRENT_IINF
IIH = NLES_CURRENT_ISUP
......@@ -1144,17 +1204,18 @@ DO JSV=1,SIZE(PFIELD,4)
END DO
END DO
ZTRAJT(:,:) = XLES_CURRENT_TRAJT(:,:)
ZDATIME(:,:)= XLES_CURRENT_DATIME(:,:)
!
IF (GNORM) THEN
IF (HUNIT(1:1)/=' ') YUNIT='-'
CALL LES_Z_NORM(GAVG,ZTRAJZ,ZWORK6)
END IF
!
!n
!
!* time average
!
IRESP = 0
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP)
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME)
!
IF (HAVG/=' ') YGROUP=HAVG//'_'//YGROUP
YTITLE (:) = YGROUP//HTITLE(:)
......@@ -1164,7 +1225,7 @@ YTITLE (:) = YGROUP//HTITLE(:)
!
!
IF (IRESP==0 .AND. ANY(ZWORK6/=XUNDEF)) &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH, &
PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ )
......@@ -1178,6 +1239,7 @@ DEALLOCATE (ZTRAJY)
DEALLOCATE (ZTRAJZ)
DEALLOCATE (ZTRAJT)
DEALLOCATE(ZWORK6)
DEALLOCATE(ZDATIME)
!
!-------------------------------------------------------------------------------
END SUBROUTINE LES_DIACHRO_SV_MASKS
......@@ -1209,6 +1271,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJX ! localization of the temporal
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJY ! series in x,y and z. remark:
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJZ ! x and y are not used for LES
REAL, DIMENSION(:,:), POINTER :: ZTRAJT ! time
REAL, DIMENSION(:,:), POINTER :: ZDATIME ! DATE
!
INTEGER, DIMENSION(1) :: IGRID ! grid indicator
CHARACTER(LEN= 10) :: YGROUP ! group title
......@@ -1242,6 +1305,7 @@ ALLOCATE (ZTRAJY(1,1,1))
ALLOCATE (ZTRAJZ(1,1,1))
ALLOCATE(ZWORK6(1,1,1,NLES_CURRENT_TIMES,1,1))
ALLOCATE(ZTRAJT(NLES_CURRENT_TIMES,1))
ALLOCATE(ZDATIME(16,NLES_CURRENT_TIMES))
!
IIL = NLES_CURRENT_IINF
IIH = NLES_CURRENT_ISUP
......@@ -1260,11 +1324,12 @@ YGROUP = HGROUP
!
ZWORK6(1,1,1,:,1,1) = PFIELD (:)
ZTRAJT(:,:) = XLES_CURRENT_TRAJT(:,:)
ZDATIME(:,:)=XLES_CURRENT_DATIME(:,:)
!
!* time average
!
IRESP = 0
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP)
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME)
!
IF (HAVG/=' ') YGROUP=HAVG//'_'//YGROUP
YTITLE(1) = HGROUP
......@@ -1273,7 +1338,7 @@ YTITLE(1) = HGROUP
! ----------------------
!
IF (IRESP==0) &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH, &
PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ )
......@@ -1287,6 +1352,7 @@ DEALLOCATE (ZTRAJY)
DEALLOCATE (ZTRAJZ)
DEALLOCATE (ZTRAJT)
DEALLOCATE(ZWORK6)
DEALLOCATE(ZDATIME)
!
!-------------------------------------------------------------------------------
END SUBROUTINE LES_DIACHRO_SURF
......@@ -1316,7 +1382,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJX ! localization of the temporal
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJY ! series in x,y and z. remark:
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTRAJZ ! x and y are not used for LES
REAL, DIMENSION(:,:), POINTER :: ZTRAJT ! time
!
REAL, DIMENSION(:,:), POINTER :: ZDATIME ! date
INTEGER, DIMENSION(1) :: IGRID ! grid indicator
CHARACTER(LEN= 10) :: YGROUP ! group title
CHARACTER(LEN=100), DIMENSION(1) :: YCOMMENT ! comment string
......@@ -1348,6 +1414,8 @@ ALLOCATE (ZTRAJY(1,1,SIZE(PFIELD,2)))
ALLOCATE (ZTRAJZ(1,1,SIZE(PFIELD,2)))
ALLOCATE(ZWORK6(1,1,1,NLES_CURRENT_TIMES,SIZE(PFIELD,2),1))
ALLOCATE(ZTRAJT(NLES_CURRENT_TIMES,1))
ALLOCATE(ZDATIME(16,NLES_CURRENT_TIMES))
!
IIL = NLES_CURRENT_IINF
IIH = NLES_CURRENT_ISUP
......@@ -1367,12 +1435,13 @@ YGROUP = HGROUP
IRESP = 0
ZWORK6(1,1,1,:,:,1) = PFIELD (:,:)
ZTRAJT(:,:) = XLES_CURRENT_TRAJT(:,:)
ZDATIME(:,:)=XLES_CURRENT_DATIME(:,:)
!
!
!* time average
!
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP)
IF (GAVG) CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME)
!
!
IF (HAVG/=' ') YGROUP=HAVG//'_'//YGROUP
......@@ -1382,7 +1451,7 @@ YTITLE(1) = HGROUP
! ----------------------
!
IF (IRESP==0) &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH, &
PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ )
......@@ -1396,6 +1465,7 @@ DEALLOCATE (ZTRAJY)
DEALLOCATE (ZTRAJZ)
DEALLOCATE (ZTRAJT)
DEALLOCATE(ZWORK6)
DEALLOCATE(ZDATIME)
!
!-------------------------------------------------------------------------------
END SUBROUTINE LES_DIACHRO_SURF_SV
......@@ -1438,6 +1508,7 @@ INTEGER :: JT ! time counter
INTEGER :: JK ! level counter
INTEGER :: IRESP ! return code
REAL, DIMENSION(:,:),POINTER :: ZTRAJT ! time
REAL, DIMENSION(:,:),POINTER :: ZDATIME ! date
!
REAL, DIMENSION(:,:,:,:,:,:), POINTER :: ZWORK6 ! contains physical field
......@@ -1461,6 +1532,7 @@ IF (GAVG .AND. (XLES_TEMP_MEAN_START==XUNDEF .OR. XLES_TEMP_MEAN_END==XUNDEF)) R
!
ALLOCATE(ZWORK6(SIZE(PFIELDX,1),1,NSPECTRA_K,NLES_CURRENT_TIMES,2,1))
ALLOCATE(ZTRAJT(NLES_CURRENT_TIMES,1))
ALLOCATE(ZDATIME(16,NLES_CURRENT_TIMES))
!
IGRID(:)=1
!
......@@ -1487,10 +1559,11 @@ DO JT=1,SIZE(PFIELDX,3)
END DO
END DO
ZTRAJT(:,:) = XLES_CURRENT_TRAJT(:,:)
ZDATIME(:,:)= XLES_CURRENT_DATIME(:,:)
!* time average
!
IF (GAVG) THEN
CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP)
CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME)
YGROUP = 'T_'//YGROUP
END IF
!
......@@ -1499,18 +1572,20 @@ END IF
! ----------------------
!
IF (IRESP==0) &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH )
!
!
DEALLOCATE (ZTRAJT)
DEALLOCATE(ZDATIME)
DEALLOCATE(ZWORK6)
!
IF (L2D) RETURN
!
ALLOCATE(ZWORK6(1,SIZE(PFIELDY,1),NSPECTRA_K,NLES_CURRENT_TIMES,2,1))
ALLOCATE(ZTRAJT(NLES_CURRENT_TIMES,1))
ALLOCATE(ZDATIME(16,NLES_CURRENT_TIMES))
!
IIL = 1
IIH = 1
......@@ -1524,6 +1599,7 @@ DO JT=1,SIZE(PFIELDY,3)
END DO
END DO
ZTRAJT(:,:) = XLES_CURRENT_TRAJT(:,:)
ZDATIME(:,:)= XLES_CURRENT_DATIME(:,:)
!
YGROUP = 'CJ_'//HGROUP
YTITLE(:) = YGROUP
......@@ -1534,16 +1610,18 @@ YCOMMENT(:) = " DOMEGAY="//YSTRING//' '//HCOMMENT
!* time average
!
IF (GAVG) THEN
CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP)
CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME)
YGROUP = 'T_'//YGROUP
END IF
!
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH )
!
DEALLOCATE (ZTRAJT)
DEALLOCATE(ZWORK6)
DEALLOCATE(ZDATIME)
!
!-------------------------------------------------------------------------------
END SUBROUTINE LES_DIACHRO_2PT
......@@ -1584,6 +1662,8 @@ INTEGER :: IRESP ! return code
!
REAL, DIMENSION(:,:,:,:,:,:), POINTER :: ZWORK6 ! contains physical field
REAL, DIMENSION(:,:), POINTER :: ZTRAJT ! time
REAL, DIMENSION(:,:), POINTER :: ZDATIME ! date
!
INTEGER :: IIL, IIH, IJL, IJH, IKL, IKH ! cartesian area relatively to the
! ! entire domain
......@@ -1610,8 +1690,11 @@ IKH=NSPECTRA_K
!
ALLOCATE(ZWORK6(SIZE(PSPECTRAX,1),1,NSPECTRA_K,NLES_CURRENT_TIMES,2,1))
ALLOCATE(ZTRAJT(NLES_CURRENT_TIMES,1))
ALLOCATE(ZDATIME(16,NLES_CURRENT_TIMES))
!
ZTRAJT(:,:) = XLES_CURRENT_TRAJT(:,:)
ZDATIME(:,:)= XLES_CURRENT_DATIME(:,:)
!
IIL = NLES_CURRENT_IINF
IIH = NLES_CURRENT_ISUP
......@@ -1631,7 +1714,7 @@ WRITE(YSTRING,FMT="(I6.6)") NINT( XLES_CURRENT_DOMEGAX )
YCOMMENT(:) = " DOMEGAX="//YSTRING//' '//HCOMMENT
!
!
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH )
!
......@@ -1639,15 +1722,16 @@ CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,XLES_CURRENT_DATI
!* time average
!
IRESP=0
CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP)
CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME)
YGROUP = 'T_'//YGROUP
!
IF (IRESP==0) &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH )
DEALLOCATE(ZWORK6)
DEALLOCATE(ZTRAJT)
DEALLOCATE(ZDATIME)
!
!* spectra in Y direction
!
......@@ -1656,8 +1740,10 @@ IF (L2D) RETURN
!
ALLOCATE(ZWORK6(1,SIZE(PSPECTRAY,1),NSPECTRA_K,NLES_CURRENT_TIMES,2,1))
ALLOCATE(ZTRAJT(NLES_CURRENT_TIMES,1))
ALLOCATE(ZDATIME(16,NLES_CURRENT_TIMES))
!
ZTRAJT(:,:) = XLES_CURRENT_TRAJT(:,:)
ZDATIME(:,:)= XLES_CURRENT_DATIME(:,:)
!
IIL = 1
IIH = 1
......@@ -1676,23 +1762,24 @@ YTITLE(:) = YGROUP
WRITE(YSTRING,FMT="(I6.6)") NINT( XLES_CURRENT_DOMEGAY )
YCOMMENT(:) = " DOMEGAY="//YSTRING//' '//HCOMMENT
!
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH )
!
!
!* time average
!
CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP)
CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME)
YGROUP = 'T_'//YGROUP
!
IF (IRESP==0) &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,XLES_CURRENT_DATIME, ZWORK6, &
CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, &
ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., &
IIL,IIH,IJL,IJH,IKL,IKH )
!
DEALLOCATE(ZWORK6)
DEALLOCATE(ZTRAJT)
DEALLOCATE(ZDATIME)
!
!-------------------------------------------------------------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment