diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 index 4337a8d8fb50d8563e5e59d454a66ea618d713b7..5bca2401c4b91d7ce1ea9902cdcf70e017a85c74 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 @@ -1174,7 +1174,7 @@ END DO istatus = NF90_INQ_VARID( infiles(1)%tfile%nncid, 'time', ivar_id ) if ( istatus == NF90_NOERR ) then allocate( tdtcur ) - istatus = NF90_GET_VAR( infiles(1)%tfile%nncid, ivar_id, tdtcur%time ) + istatus = NF90_GET_VAR( infiles(1)%tfile%nncid, ivar_id, tdtcur%xtime ) if ( istatus == NF90_NOERR ) then istatus = NF90_INQUIRE_ATTRIBUTE( infiles(1)%tfile%nncid, ivar_id, 'units', len = ilen ) if ( istatus == NF90_NOERR ) then @@ -1182,14 +1182,14 @@ END DO istatus = NF90_GET_ATT( infiles(1)%tfile%nncid, ivar_id, 'units', yunits ) ! Extract date from yunits idx = INDEX( yunits, 'since ' ) - Read( yunits(idx+6 :idx+9 ) , '( I4.4 )' ) tdtcur%tdate%year - Read( yunits(idx+11:idx+12 ), '( I2.2 )' ) tdtcur%tdate%month - Read( yunits(idx+14:idx+15 ), '( I2.2 )' ) tdtcur%tdate%day + Read( yunits(idx+6 :idx+9 ) , '( I4.4 )' ) tdtcur%nyear + Read( yunits(idx+11:idx+12 ), '( I2.2 )' ) tdtcur%nmonth + Read( yunits(idx+14:idx+15 ), '( I2.2 )' ) tdtcur%nday if ( .not. associated( tdtmod ) ) then allocate( tdtmod ) tdtmod = tdtcur - tdtmod%time = 0. + tdtmod%xtime = 0. end if gok = .true. diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 index c7a39030555be3f9f1cc8e7167ed2bd4c3b97d18..15bb499d2ca93f21606dbcee61087753ef7c4230 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 @@ -2058,9 +2058,9 @@ IF (IRESP==0) THEN IF (ISP == TPFILE%NMASTER_RANK) THEN if ( gnc4 ) call IO_Field_read_nc4( tpfile, tpfield, tpdata, iresp ) if ( glfi ) call IO_Field_read_lfi( tpfile, tpfield, tpdata, iresp ) - ITDATE(1) = TPDATA%TDATE%YEAR - ITDATE(2) = TPDATA%TDATE%MONTH - ITDATE(3) = TPDATA%TDATE%DAY + ITDATE(1) = TPDATA%nyear + ITDATE(2) = TPDATA%nmonth + ITDATE(3) = TPDATA%nday END IF ! CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) @@ -2070,10 +2070,10 @@ IF (IRESP==0) THEN IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD) ! CALL MPI_BCAST( ITDATE, 3, MNHINT_MPI, TPFILE%NMASTER_RANK-1, TPFILE%NMPICOMM, IERR ) - CALL MPI_BCAST( TPDATA%TIME, 1, MNHREAL_MPI, TPFILE%NMASTER_RANK-1, TPFILE%NMPICOMM, IERR ) - TPDATA%TDATE%YEAR = ITDATE(1) - TPDATA%TDATE%MONTH = ITDATE(2) - TPDATA%TDATE%DAY = ITDATE(3) + CALL MPI_BCAST( TPDATA%xtime, 1, MNHREAL_MPI, TPFILE%NMASTER_RANK-1, TPFILE%NMPICOMM, IERR ) + TPDATA%nyear = ITDATE(1) + TPDATA%nmonth = ITDATE(2) + TPDATA%nday = ITDATE(3) END IF END IF ! diff --git a/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90 b/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90 index 6d2990d35e90f959b84c5ed7430ac6aa7c4f72c9..1e704e9353370d54127bacf6a7596437f2ef4115 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90 @@ -610,9 +610,9 @@ ILENG=SIZE(ITDATE) CALL IO_Field_read_check_lfi(TPFILE,TZFIELD,ILENG,IWORK,ITOTAL,IRESP,GGOOD) ! IF (GGOOD) THEN - TPDATA%TDATE%YEAR = IWORK(IWORK(2)+2+1) - TPDATA%TDATE%MONTH = IWORK(IWORK(2)+2+2) - TPDATA%TDATE%DAY = IWORK(IWORK(2)+2+3) + TPDATA%nyear = IWORK(IWORK(2)+2+1) + TPDATA%nmonth = IWORK(IWORK(2)+2+2) + TPDATA%nday = IWORK(IWORK(2)+2+3) END IF ! IF (ALLOCATED(IWORK)) DEALLOCATE(IWORK) @@ -634,7 +634,7 @@ CALL IO_Field_read_check_lfi(TPFILE,TZFIELD,ILENG,IWORK,ITOTAL,IRESP,GGOOD) IF (GGOOD) THEN !TRANSFER_I8_R works with 1D arrays ZTIME = TRANSFER_I8_R( (/ IWORK(IWORK(2)+3) /) ) - TPDATA%TIME = ZTIME(1) + TPDATA%xtime = ZTIME(1) END IF ! IF (ALLOCATED(IWORK)) DEALLOCATE(IWORK) diff --git a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 index c81a2edb710e2dd94d7abc1cecb0630f8874a5b9..1984e4cce7dba935682d4c198d4c3d89a3193df5 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 @@ -1302,7 +1302,7 @@ IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_T0' IF (IDIMS == 0 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN ! Read time - istatus = NF90_GET_VAR(INCID, IVARID, TPDATA%TIME) + istatus = NF90_GET_VAR(INCID, IVARID, TPDATA%xtime) IF (istatus /= NF90_NOERR) THEN CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_T0','NF90_GET_VAR',TRIM(YVARNAME),IRESP) GOTO 1000 @@ -1311,11 +1311,11 @@ IF (IDIMS == 0 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN CALL IO_Field_attr_read_check_nc4(TPFILE,TPFIELD,IVARID,IRESP,HCALENDAR='standard') ! Extract date from UNITS IDX = INDEX(TPFIELD%CUNITS,'since ') - READ(TPFIELD%CUNITS(IDX+6 :IDX+9), '( I4.4 )') TPDATA%TDATE%YEAR - READ(TPFIELD%CUNITS(IDX+11:IDX+12),'( I2.2 )') TPDATA%TDATE%MONTH - READ(TPFIELD%CUNITS(IDX+14:IDX+15),'( I2.2 )') TPDATA%TDATE%DAY + READ(TPFIELD%CUNITS(IDX+6 :IDX+9), '( I4.4 )') TPDATA%nyear + READ(TPFIELD%CUNITS(IDX+11:IDX+12),'( I2.2 )') TPDATA%nmonth + READ(TPFIELD%CUNITS(IDX+14:IDX+15),'( I2.2 )') TPDATA%nday ! Simple check (should catch most errors) - IF ( TPDATA%TDATE%DAY<1 .OR. TPDATA%TDATE%DAY>31 .OR. TPDATA%TDATE%MONTH<1 .OR. TPDATA%TDATE%MONTH>12 ) THEN + IF ( TPDATA%nday<1 .OR. TPDATA%nday>31 .OR. TPDATA%nmonth<1 .OR. TPDATA%nmonth>12 ) THEN CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Field_read_nc4_T0',TRIM(TPFILE%CNAME)//': '//TRIM(YVARNAME)// & ' read date is invalid') IRESP = -3 diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90 index 7f5f2ce2235060dfc54d978e2062a75fcbc86ea1..1508b1cf39bf32123c1ce0dd4abf497aeb3185fd 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90 @@ -736,9 +736,9 @@ TZFIELD = TPFIELD ! TZFIELD%CMNHNAME = TRIM(TPFIELD%CMNHNAME)//'%TDATE' TZFIELD%CCOMMENT = 'YYYYMMDD' -ITDATE(1)=TPDATA%TDATE%YEAR -ITDATE(2)=TPDATA%TDATE%MONTH -ITDATE(3)=TPDATA%TDATE%DAY +ITDATE(1)=TPDATA%nyear +ITDATE(2)=TPDATA%nmonth +ITDATE(3)=TPDATA%nday ILENG=SIZE(ITDATE) ! CALL WRITE_PREPARE(TZFIELD,ILENG,IWORK,ITOTAL,IRESP) @@ -768,7 +768,7 @@ ILENG=1 CALL WRITE_PREPARE(TZFIELD,ILENG,IWORK,ITOTAL,IRESP) ! IF (IRESP==0) THEN - IWORK(LEN(TZFIELD%CCOMMENT)+3) = TRANSFER(TPDATA%TIME,IWORK(1)) + IWORK(LEN(TZFIELD%CCOMMENT)+3) = TRANSFER(TPDATA%xtime,IWORK(1)) YRECFM=TRIM(TZFIELD%CMNHNAME) IF( LEN_TRIM(TZFIELD%CMNHNAME) > LEN(YRECFM) ) & CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_write_lfi_T0','field name was truncated to '& @@ -826,9 +826,9 @@ TZFIELD%CCOMMENT = 'YYYYMMDD' ! DO JI = 1, SIZE( TPDATA ) IPOS = 1 + 3 * ( JI - 1 ) - ITDATE(IPOS ) = TPDATA(JI)%TDATE%YEAR - ITDATE(IPOS + 1 ) = TPDATA(JI)%TDATE%MONTH - ITDATE(IPOS + 2 ) = TPDATA(JI)%TDATE%DAY + ITDATE(IPOS ) = TPDATA(JI)%nyear + ITDATE(IPOS + 1 ) = TPDATA(JI)%nmonth + ITDATE(IPOS + 2 ) = TPDATA(JI)%nday END DO ! CALL WRITE_PREPARE(TZFIELD,ILENG,IWORK,ITOTAL,IRESP) @@ -858,7 +858,7 @@ ILENG = SIZE( TPDATA ) CALL WRITE_PREPARE(TZFIELD,ILENG,IWORK,ITOTAL,IRESP) ! IF (IRESP==0) THEN - CALL TRANSFER_R_I8(TPDATA(:)%TIME,IWORK(LEN(TPFIELD%CCOMMENT)+3:)) + CALL TRANSFER_R_I8(TPDATA(:)%xtime,IWORK(LEN(TPFIELD%CCOMMENT)+3:)) YRECFM=TRIM(TZFIELD%CMNHNAME) IF( LEN_TRIM(TZFIELD%CMNHNAME) > LEN(YRECFM) ) & CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_write_lfi_T1','field name was truncated to '& diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 index 2b1d3f20360c372377532b6bdc633481023cecf9..c693aa11fb3c7e801470b28fee0216cf25078873 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 @@ -972,16 +972,16 @@ TZFIELD = TPFIELD IF (.NOT.ASSOCIATED(TDTMOD)) THEN CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_write_nc4_T0',TRIM(TPFILE%CNAME)// & ': '//TRIM(TZFIELD%CMNHNAME)//': DTMOD is not associated and not known. Reference date set to 2000/01/01') - TZREF%TDATE%YEAR = 2000 - TZREF%TDATE%MONTH = 1 - TZREF%TDATE%DAY = 1 - TZREF%TIME = 0. + TZREF%nyear = 2000 + TZREF%nmonth = 1 + TZREF%nday = 1 + TZREF%xtime = 0. ELSE TZREF = TDTMOD - TZREF%TIME = 0. + TZREF%xtime = 0. END IF WRITE(YUNITS,'( "seconds since ",I4.4,"-",I2.2,"-",I2.2," 00:00:00 +0:00" )') & - TZREF%TDATE%YEAR, TZREF%TDATE%MONTH, TZREF%TDATE%DAY + TZREF%nyear, TZREF%nmonth, TZREF%nday TZFIELD%CUNITS = TRIM(YUNITS) ! call IO_Field_create_nc4( tpfile, tzfield, kvarid = ivarid, hcalendar = 'standard' ) @@ -1027,16 +1027,16 @@ TZFIELD = TPFIELD IF (.NOT.ASSOCIATED(TDTMOD)) THEN CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_write_nc4_T1',TRIM(TPFILE%CNAME)// & ': '//TRIM(TZFIELD%CMNHNAME)//': DTMOD is not associated and not known. Reference date set to 2000/01/01') - TZREF%TDATE%YEAR = 2000 - TZREF%TDATE%MONTH = 1 - TZREF%TDATE%DAY = 1 - TZREF%TIME = 0. + TZREF%nyear = 2000 + TZREF%nmonth = 1 + TZREF%nday = 1 + TZREF%xtime = 0. ELSE TZREF = TDTMOD - TZREF%TIME = 0. + TZREF%xtime = 0. END IF WRITE(YUNITS,'( "seconds since ",I4.4,"-",I2.2,"-",I2.2," 00:00:00 +0:00" )') & - TZREF%TDATE%YEAR, TZREF%TDATE%MONTH, TZREF%TDATE%DAY + TZREF%nyear, TZREF%nmonth, TZREF%nday TZFIELD%CUNITS = TRIM(YUNITS) ! call IO_Field_create_nc4( tpfile, tzfield, kshape = Shape( tpdata), kvarid = ivarid, hcalendar = 'standard' ) @@ -1705,12 +1705,12 @@ subroutine Write_time_coord( tdim, tpdates, tpdates_bound ) ! Model beginning date (tdtmod%tdate) is used as the reference date ! Reference time is set to 0. tzref = tdtmod - tzref%time = 0. + tzref%xtime = 0. else - tzref%tdate%year = 2000 - tzref%tdate%month = 1 - tzref%tdate%day = 1 - tzref%time = 0. + tzref%nyear = 2000 + tzref%nmonth = 1 + tzref%nday = 1 + tzref%xtime = 0. end if yvarname = Trim( tdim%cname ) @@ -1733,7 +1733,7 @@ subroutine Write_time_coord( tdim, tpdates, tpdates_bound ) IF ( istatus /= NF90_NOERR ) & call IO_Err_handle_nc4( istatus, 'Write_time_coord', 'NF90_PUT_ATT', 'standard_name for ' // Trim( yvarname ) ) Write( yunits, '( "seconds since ", i4.4, "-", i2.2, "-", i2.2, " 00:00:00 +0:00" )' ) & - tzref%tdate%year, tzref%tdate%month, tzref%tdate%day + tzref%nyear, tzref%nmonth, tzref%nday istatus = NF90_PUT_ATT( incid, ivarid, 'units', yunits ) if ( istatus /= NF90_NOERR ) & call IO_Err_handle_nc4( istatus, 'Write_time_coord', 'NF90_PUT_ATT', 'units for ' // Trim( yvarname ) ) diff --git a/src/MNH/adv_forcingn.f90 b/src/MNH/adv_forcingn.f90 index 4c41fa7834836468fe2f00aea3d9eaf35fd155aa..963f453dc3cf601ce480bc3c3236a23227b6f140 100644 --- a/src/MNH/adv_forcingn.f90 +++ b/src/MNH/adv_forcingn.f90 @@ -161,10 +161,10 @@ IF (GSFIRSTCALL) THEN WRITE(UNIT=ILUOUT0,FMT='(" THERE ARE ",I2," ADV FORCING FIELDs AT:")') NADVFRC DO JSX_ADV = 1 , NADVFRC WRITE(UNIT=ILUOUT0,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') & - TDTADVFRC(JSX_ADV)%TIME, & - TDTADVFRC(JSX_ADV)%TDATE%DAY, & - TDTADVFRC(JSX_ADV)%TDATE%MONTH, & - TDTADVFRC(JSX_ADV)%TDATE%YEAR + TDTADVFRC(JSX_ADV)%xtime, & + TDTADVFRC(JSX_ADV)%nday, & + TDTADVFRC(JSX_ADV)%nmonth, & + TDTADVFRC(JSX_ADV)%nyear END DO !* 1.2 find first sounding to be used diff --git a/src/MNH/advec_ppm_algo.f90 b/src/MNH/advec_ppm_algo.f90 index b7eb4415ff508d1e5c77e8d135c171e4ee3eb2bc..b538a305dabea79c7e88832ed8a471501be18660 100644 --- a/src/MNH/advec_ppm_algo.f90 +++ b/src/MNH/advec_ppm_algo.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2007-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 adiab 2007/03/27 10:07:52 -!----------------------------------------------------------------- ! ########################## MODULE MODI_ADVEC_PPM_ALGO ! ########################## @@ -125,7 +120,7 @@ LOGICAL :: GFLAG ! Logical flag ! ------------ ! PSRC = PFIELDT -GFLAG = ABS(MOD(TPDTCUR%TIME/PTSTEP,2.)-1.) .LE. 0.5 +GFLAG = ABS(MOD(TPDTCUR%xtime/PTSTEP,2.)-1.) .LE. 0.5 ! SELECT CASE (HMET_ADV_SCHEME) ! diff --git a/src/MNH/aerozon.f90 b/src/MNH/aerozon.f90 index 190ff0298cf04f85457e0617205156d8fd0ed9c8..b2e6b6c9f9ee75dcde79d6a0e985c75c1a35b0d8 100644 --- a/src/MNH/aerozon.f90 +++ b/src/MNH/aerozon.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -273,19 +273,19 @@ DO JI=1,11 END DO ! IF ( LFIX_DAT ) THEN - IF( MOD(TPDTEXP%TDATE%YEAR,4).EQ.0 ) THEN - ZDATE = REAL(TPDTEXP%TDATE%DAY + IBIS(TPDTEXP%TDATE%MONTH-1)) - 1 + IF( MOD(TPDTEXP%nyear,4).EQ.0 ) THEN + ZDATE = REAL(TPDTEXP%nday + IBIS(TPDTEXP%nmonth-1)) - 1 ZAD = 2.0*XPI*ZDATE/366.0 ELSE - ZDATE = REAL(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTEXP%nday + INOBIS(TPDTEXP%nmonth-1)) - 1 ZAD = 2.0*XPI*ZDATE/365.0 END IF ELSE - IF( MOD(TPDTCUR%TDATE%YEAR,4).EQ.0 ) THEN - ZDATE = REAL(TPDTCUR%TDATE%DAY + IBIS(TPDTCUR%TDATE%MONTH-1)) - 1 + IF( MOD(TPDTCUR%nyear,4).EQ.0 ) THEN + ZDATE = REAL(TPDTCUR%nday + IBIS(TPDTCUR%nmonth-1)) - 1 ZAD = 2.0*XPI*ZDATE/366.0 ELSE - ZDATE = REAL(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTCUR%nday + INOBIS(TPDTCUR%nmonth-1)) - 1 ZAD = 2.0*XPI*ZDATE/365.0 END IF END IF @@ -404,11 +404,11 @@ END IF ALLOCATE (ZOZON(KDLON,KFLEV)) ! IF (LFIX_DAT ) THEN - ZYMD = TPDTEXP%TDATE%YEAR * 1E4 + TPDTEXP%TDATE%MONTH * 1E2 + TPDTEXP%TDATE%DAY - ZHOURS = INT(TPDTCUR%TIME / 60.) + ZYMD = TPDTEXP%nyear * 1E4 + TPDTEXP%nmonth * 1E2 + TPDTEXP%nday + ZHOURS = INT(TPDTCUR%xtime / 60.) ELSE - ZYMD = TPDTCUR%TDATE%YEAR * 1E4 + TPDTCUR%TDATE%MONTH * 1E2 + TPDTCUR%TDATE%DAY - ZHOURS = INT(TPDTCUR%TIME / 60.) + ZYMD = TPDTCUR%nyear * 1E4 + TPDTCUR%nmonth * 1E2 + TPDTCUR%nday + ZHOURS = INT(TPDTCUR%xtime / 60.) END IF ! ! Fortuin langematz climatology loading diff --git a/src/MNH/aircraft_balloon_evol.f90 b/src/MNH/aircraft_balloon_evol.f90 index f4a3dd5d236e1b1a9a7a0dbd92b1ea59236c365a..f16bad660c383bb8db3c64d5eeb9beb1b4569dbb 100644 --- a/src/MNH/aircraft_balloon_evol.f90 +++ b/src/MNH/aircraft_balloon_evol.f90 @@ -436,9 +436,9 @@ IF (.NOT. TPFLYER%FLY) THEN TPFLYER%CRASH=.FALSE. IF (ZTDIST <= PTSTEP ) THEN WRITE(ILUOUT,*) '-------------------------------------------------------------------' - WRITE(ILUOUT,*) 'Aircraft ',TPFLYER%TITLE,' takes off the ', & - TDTCUR%TDATE%DAY,'/',TDTCUR%TDATE%MONTH,'/', & - TDTCUR%TDATE%YEAR,' at ',NINT(TDTCUR%TIME),' sec.' + WRITE(ILUOUT,*) 'Aircraft ',TPFLYER%TITLE,' takes off the ', & + TDTCUR%nday,'/',TDTCUR%nmonth,'/', & + TDTCUR%nyear,' at ',NINT(TDTCUR%xtime),' sec.' WRITE(ILUOUT,*) '-------------------------------------------------------------------' ENDIF ENDIF @@ -446,9 +446,9 @@ IF (.NOT. TPFLYER%FLY) THEN TPFLYER%FLY = .TRUE. GLAUNCH = .TRUE. WRITE(ILUOUT,*) '-------------------------------------------------------------------' - WRITE(ILUOUT,*) 'Balloon ',TPFLYER%TITLE,' is launched the ', & - TDTCUR%TDATE%DAY,'/',TDTCUR%TDATE%MONTH,'/', & - TDTCUR%TDATE%YEAR,' at ',NINT(TDTCUR%TIME),' sec.' + WRITE(ILUOUT,*) 'Balloon ',TPFLYER%TITLE,' is launched the ', & + TDTCUR%nday,'/',TDTCUR%nmonth,'/', & + TDTCUR%nyear,' at ',NINT(TDTCUR%xtime),' sec.' WRITE(ILUOUT,*) '-------------------------------------------------------------------' END IF ! @@ -494,10 +494,10 @@ END IF IF (GSTORE) THEN IN = TPFLYER%N_CUR #if 0 - tpflyer%tpdates(in)%date%year = tdtexp%date%year - tpflyer%tpdates(in)%date%month = tdtexp%date%month - tpflyer%tpdates(in)%date%day = tdtexp%date%day - tpflyer%tpdates(in)%time = tdtexp%time + ( in - 1 ) * tpflyer%step + tpflyer%tpdates(in)%nyear = tdtexp%nyear + tpflyer%tpdates(in)%nmonth = tdtexp%nmonth + tpflyer%tpdates(in)%nday = tdtexp%nday + tpflyer%tpdates(in)%xtime = tdtexp%xtime + ( in - 1 ) * tpflyer%step #else tpflyer%tpdates(in) = tdtcur #endif @@ -809,19 +809,19 @@ IF ( TPFLYER%FLY) THEN TPFLYER%FLY = .FALSE. IF (TPFLYER%TYPE=='AIRCRA' .AND. .NOT. GLAUNCH ) THEN WRITE(ILUOUT,*) 'Aircraft ',TPFLYER%TITLE,' flew out of the domain the ', & - TDTCUR%TDATE%DAY,'/',TDTCUR%TDATE%MONTH,'/', & - TDTCUR%TDATE%YEAR,' at ',TDTCUR%TIME,' sec.' + TDTCUR%nday,'/',TDTCUR%nmonth,'/', & + TDTCUR%nyear,' at ',TDTCUR%xtime,' sec.' ELSE IF (TPFLYER%TYPE /= 'AIRCRA') THEN WRITE(ILUOUT,*) 'Balloon ',TPFLYER%TITLE,' crashed the ', & - TDTCUR%TDATE%DAY,'/',TDTCUR%TDATE%MONTH,'/', & - TDTCUR%TDATE%YEAR,' at ',TDTCUR%TIME,' sec.' + TDTCUR%nday,'/',TDTCUR%nmonth,'/', & + TDTCUR%nyear,' at ',TDTCUR%xtime,' sec.' END IF ELSE IF (TPFLYER%TYPE=='AIRCRA' .AND. .NOT. GLAUNCH .AND. ZTDIST > PTSTEP ) THEN WRITE(ILUOUT,*) '-------------------------------------------------------------------' WRITE(ILUOUT,*) 'Aircraft ',TPFLYER%TITLE,' flies in leg',TPFLYER%SEGCURN ,' the ', & - TDTCUR%TDATE%DAY,'/',TDTCUR%TDATE%MONTH,'/', & - TDTCUR%TDATE%YEAR,' at ',NINT(TDTCUR%TIME),' sec.' + TDTCUR%nday,'/',TDTCUR%nmonth,'/', & + TDTCUR%nyear,' at ',NINT(TDTCUR%xtime),' sec.' WRITE(ILUOUT,*) '-------------------------------------------------------------------' ENDIF ! @@ -1688,12 +1688,12 @@ IF (TPFLYER%NMODEL /= IMODEL) THEN IF (NDAD(IMODEL) == TPFLYER%NMODEL) THEN WRITE(ILUOUT,*) '-------------------------------------------------------------------' WRITE(ILUOUT,*) TPFLYER%TITLE,' comes from model ',IMODEL,' in model ',& - TPFLYER%NMODEL,' at ',NINT(TDTCUR%TIME),' sec.' + TPFLYER%NMODEL,' at ',NINT(TDTCUR%xtime),' sec.' WRITE(ILUOUT,*) '-------------------------------------------------------------------' ELSE WRITE(ILUOUT,*) '-------------------------------------------------------------------' WRITE(ILUOUT,*) TPFLYER%TITLE,' goes from model ',IMODEL,' to model ',& - TPFLYER%NMODEL,' at ',NINT(TDTCUR%TIME),' sec.' + TPFLYER%NMODEL,' at ',NINT(TDTCUR%xtime),' sec.' WRITE(ILUOUT,*) '-------------------------------------------------------------------' ENDIF ENDIF diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90 index 6d6aa9a79bfeaed8dddf0abee87815c0bd430a20..d1ac4a1a677008440dbdc542935e1b083af2a00c 100644 --- a/src/MNH/ch_monitorn.f90 +++ b/src/MNH/ch_monitorn.f90 @@ -708,7 +708,7 @@ END IF IF (KTCOUNT==1 .OR. & (MOD(ISTCOUNT, MAX(1, INT(XCH_TUV_TUPDATE/XTSTEP)) ) .EQ. 0)) THEN ! - WRITE(KLUOUT,*)"TIME call update jvalue: ",TDTCUR%TIME + WRITE(KLUOUT,*)"TIME call update jvalue: ",TDTCUR%xtime ! IF (.NOT.ASSOCIATED(XJVALUES)) & ALLOCATE(XJVALUES(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),JPJVMAX)) @@ -716,7 +716,7 @@ IF (KTCOUNT==1 .OR. & CALL CH_UPDATE_JVALUES(KLUOUT, XZENITH, XRT, & XALBUV, XZS, XZZ, XLAT0, XLON0, & SIZE(XZZ,1), SIZE(XZZ,2), SIZE(XZZ,3), NRR, & - TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%YEAR, TDTCUR%TIME,& + TDTCUR%nday, TDTCUR%nmonth, TDTCUR%nyear, TDTCUR%xtime, & LCH_TUV_ONLINE, CCH_TUV_CLOUDS, & XCH_TUV_ALBNEW, XCH_TUV_DOBNEW, XRHODREF, XJVALUES, & IIB,IIE,IJB,IJE,IIU,IJU, KVERB ) @@ -732,7 +732,7 @@ ISTCOUNT = ISTCOUNT + 1 !* 3.1 sedimentation term and wet deposition for aerosols tendency (XSEDA) ! IF (LORILAM) THEN - ZTIME = TDTCUR%TIME ! need for ch_orilam + ZTIME = TDTCUR%xtime ! need for ch_orilam XSEDA(:,:,:,:) = 0. ZSEDA(:,:) = 0. ! dry sedimentation @@ -995,14 +995,14 @@ DO JL=1,ISVECNMASK CASE ('NONE','KESS','ICE3','ICE4') IF (GSPLIT) THEN ! LWC and LWR computed from tendencies CALL CH_METEO_TRANS_KESS(JL, XRHODJ, XRHODREF, XRRS, XTHT, XPABST, & - ISVECNPT, ISVECMASK, TZM, TDTCUR%TDATE%DAY, & - TDTCUR%TDATE%MONTH, TDTCUR%TDATE%YEAR, & + ISVECNPT, ISVECMASK, TZM, TDTCUR%nday, & + TDTCUR%nmonth, TDTCUR%nyear, & XLAT, XLON, XLAT0, XLON0, LUSERV, LUSERC, & LUSERR, KLUOUT, CCLOUD, PTSTEP ) ELSE CALL CH_METEO_TRANS_KESS(JL, XRHODJ, XRHODREF, XRT, XTHT, XPABST, & - ISVECNPT, ISVECMASK, TZM, TDTCUR%TDATE%DAY, & - TDTCUR%TDATE%MONTH, TDTCUR%TDATE%YEAR, & + ISVECNPT, ISVECMASK, TZM, TDTCUR%nday, & + TDTCUR%nmonth, TDTCUR%nyear, & XLAT, XLON, XLAT0, XLON0, LUSERV, LUSERC, & LUSERR, KLUOUT, CCLOUD ) ENDIF @@ -1011,14 +1011,14 @@ DO JL=1,ISVECNMASK IF (GSPLIT) THEN ! LWC and LWR computed from tendencies CALL CH_METEO_TRANS_C2R2(JL, XRHODJ, XRHODREF, XRRS, XRSVS(:,:,:,NSV_C2R2BEG+1), & XRSVS(:,:,:,NSV_C2R2BEG+2), XTHT, XPABST, ISVECNPT, & - ISVECMASK, TZM, TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH, & - TDTCUR%TDATE%YEAR, XLAT,XLON, XLAT0, XLON0, LUSERV, & + ISVECMASK, TZM, TDTCUR%nday, TDTCUR%nmonth, & + TDTCUR%nyear, XLAT,XLON, XLAT0, XLON0, LUSERV, & LUSERC, LUSERR, KLUOUT, CCLOUD, PTSTEP ) ELSE CALL CH_METEO_TRANS_C2R2(JL, XRHODJ, XRHODREF, XRT, XSVT(:,:,:,NSV_C2R2BEG+1), & XSVT(:,:,:,NSV_C2R2BEG+2), XTHT, XPABST, ISVECNPT, & - ISVECMASK, TZM, TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH, & - TDTCUR%TDATE%YEAR, XLAT,XLON, XLAT0, XLON0, LUSERV, & + ISVECMASK, TZM, TDTCUR%nday, TDTCUR%nmonth, & + TDTCUR%nyear, XLAT,XLON, XLAT0, XLON0, LUSERV, & LUSERC, LUSERR, KLUOUT, CCLOUD ) ENDIF END SELECT @@ -1044,13 +1044,13 @@ DO JL=1,ISVECNMASK END DO END SELECT CALL CH_SET_RATES & - (TDTCUR%TIME, ZCHEM, TZM, IMI, KLUOUT, KVERB, ISVECNPT, NEQ, NRRL, ZPH) + (TDTCUR%xtime, ZCHEM, TZM, IMI, KLUOUT, KVERB, ISVECNPT, NEQ, NRRL, ZPH) ELSE CALL CH_SET_RATES & - (TDTCUR%TIME, ZCHEM, TZM, IMI, KLUOUT, KVERB, ISVECNPT, NEQ, NRRL) + (TDTCUR%xtime, ZCHEM, TZM, IMI, KLUOUT, KVERB, ISVECNPT, NEQ, NRRL) ENDIF ! - CALL CH_SET_PHOTO_RATES( TDTCUR%TIME, ZCHEM, JL, TZM, IMI, KLUOUT, KVERB, & + CALL CH_SET_PHOTO_RATES( TDTCUR%xtime, ZCHEM, JL, TZM, IMI, KLUOUT, KVERB, & ISVECNPT, ISVECMASK, NEQ, XJVALUES) ! !* 4.4 initialize aerosol parameters and moments of 0th, @@ -1073,7 +1073,7 @@ DO JL=1,ISVECNMASK ZOLDCHEM(:,:) = ZCHEM(:,:) DO JM = 1, NCH_SUBSTEPS CALL CH_SOLVER_n & - (TDTCUR%TIME, ZDTSOLVER, ZCHEM, ZNEWCHEM, NEQ, ISVECNPT, IMI) + (TDTCUR%xtime, ZDTSOLVER, ZCHEM, ZNEWCHEM, NEQ, ISVECNPT, IMI) ZCHEM(:,:) = MAX(0.0,ZNEWCHEM(:,:)) END DO IF (CSOLVER(1:2)=="RO" .AND. NEQAQ>0) THEN ! aqueous chemistry case rosenbrock solver @@ -1139,7 +1139,7 @@ DO JL=1,ISVECNMASK ! selected species ! IF (NEQ_PLT>0) THEN - CALL CH_PRODLOSS(TDTCUR%TIME,ZCHEM,ZPRODTOT,ZLOSSTOT,IMI,ISVECNPT,NEQ) + CALL CH_PRODLOSS(TDTCUR%xtime,ZCHEM,ZPRODTOT,ZLOSSTOT,IMI,ISVECNPT,NEQ) DO JM=1, NEQ_PLT DO JN=1,ISVECNPT ZPROD(JN,JM)=ZPRODTOT(JN,NIND_SPEC(JM)) @@ -1153,7 +1153,7 @@ DO JL=1,ISVECNMASK ! filter selected species ! IF (NEQ_BUDGET>0) THEN - CALL CH_TERMS(TDTCUR%TIME,ZCHEM,ZTCHEMTOT,IMI,ISVECNPT,NEQ,NREAC) + CALL CH_TERMS(TDTCUR%xtime,ZCHEM,ZTCHEMTOT,IMI,ISVECNPT,NEQ,NREAC) DO JM=1,NEQ_BUDGET DO JN=1,ISVECNPT JS=1 diff --git a/src/MNH/compute_r00.f90 b/src/MNH/compute_r00.f90 index 5b7c686508c5c690de357cfabbbd28710b36f0b6..692fb3a1e0d1b8c90710f2d086f5bd37565c2962 100644 --- a/src/MNH/compute_r00.f90 +++ b/src/MNH/compute_r00.f90 @@ -256,12 +256,12 @@ DO JFILECUR=1,NFILES IF (GSTART) THEN ! CALL IO_Field_read(TZTRACFILE,'DTCUR',TDTCUR_START) - IHOUR = INT(TDTCUR_START%TIME/3600.) - ZREMAIN = MOD(TDTCUR_START%TIME,3600.) + IHOUR = INT(TDTCUR_START%xtime/3600.) + ZREMAIN = MOD(TDTCUR_START%xtime,3600.) IMINUTE = INT(ZREMAIN/60.) ZSECOND = MOD(ZREMAIN,60.) WRITE(YDATE,FMT='(1X,I4.4,I2.2,I2.2,2X,I2.2,"H",I2.2,"M", & - & F5.2,"S")') TDTCUR_START%TDATE, IHOUR,IMINUTE,ZSECOND + & F5.2,"S")') TDTCUR_START%nyear, TDTCUR_START%nmonth, TDTCUR_START%nday, IHOUR,IMINUTE,ZSECOND ! CALL IO_Field_read(TZTRACFILE,'THT',ZTH0(:,:,:)) ! diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90 index af19ea567260d44334e32e912252980f5018ed86..b5b12924079dea33ebf4dadfd616899a1897ee0f 100644 --- a/src/MNH/diag.f90 +++ b/src/MNH/diag.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1999-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1999-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -537,10 +537,10 @@ IF ( LAIRCRAFT_BALLOON ) THEN ! TPDTCUR_SAVE = TDTCUR ! - TXDTBAL%TDATE%YEAR = TDTCUR%TDATE%YEAR - TXDTBAL%TDATE%MONTH = TDTCUR%TDATE%MONTH - TXDTBAL%TDATE%DAY = TDTCUR%TDATE%DAY - TXDTBAL%TIME = TDTCUR%TIME - NTIME_AIRCRAFT_BALLOON/2. + TXDTBAL%nyear = TDTCUR%nyear + TXDTBAL%nmonth = TDTCUR%nmonth + TXDTBAL%nday = TDTCUR%nday + TXDTBAL%xtime = TDTCUR%xtime - NTIME_AIRCRAFT_BALLOON/2. CALL DATETIME_CORRECTDATE(TXDTBAL) TDTCUR = TXDTBAL !TDTCUR is used in AIRCRAFT_BALLOON ! @@ -555,7 +555,7 @@ IF ( LAIRCRAFT_BALLOON ) THEN XUT, XVT, XWT, XPABST, XTHT, XRT, XSVT, & XTKET, XTSRAD, XRHODREF,XCIT,ZSEA) - TXDTBAL%TIME=TXDTBAL%TIME + XSTEP_AIRCRAFT_BALLOON + TXDTBAL%xtime = TXDTBAL%xtime + XSTEP_AIRCRAFT_BALLOON CALL DATETIME_CORRECTDATE(TXDTBAL) TDTCUR = TXDTBAL !TDTCUR is used in AIRCRAFT_BALLOON ENDDO diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90 index 3cd873895ccd911ef791e4700cda3fde6ded209a..8ae281d266727272811789065a02bce9cad1ec3c 100644 --- a/src/MNH/flash_geom_elec.f90 +++ b/src/MNH/flash_geom_elec.f90 @@ -1525,7 +1525,7 @@ END IF ! (inb_cell .ge. 1) ! -------------------------------------------------- ! IF (LLMA) THEN - IF( IPROC .EQ. 0 .AND. TDTCUR%TIME >= TDTLMA%TIME - PTSTEP ) THEN + IF( IPROC .EQ. 0 .AND. TDTCUR%xtime >= TDTLMA%xtime - PTSTEP ) THEN CALL WRITE_OUT_ASCII CALL WRITE_OUT_LMA ISFLASH_NUMBER(0) = ISFLASH_NUMBER(NNBLIGHT) diff --git a/src/MNH/forcing.f90 b/src/MNH/forcing.f90 index ef75e5383198891f83377c714ad9f49413b01c43..062cd4afa4cd7221157c6e5e550a96145bc38730 100644 --- a/src/MNH/forcing.f90 +++ b/src/MNH/forcing.f90 @@ -286,10 +286,10 @@ IF (GSFIRSTCALL) THEN WRITE(UNIT=ILUOUT0,FMT='(" THERE ARE ",I2," FORCING SOUNDINGS AT:")') NFRC DO JSX = 1 , NFRC WRITE(UNIT=ILUOUT0,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') & - TDTFRC(JSX)%TIME, & - TDTFRC(JSX)%TDATE%DAY, & - TDTFRC(JSX)%TDATE%MONTH, & - TDTFRC(JSX)%TDATE%YEAR + TDTFRC(JSX)%xtime, & + TDTFRC(JSX)%nday, & + TDTFRC(JSX)%nmonth, & + TDTFRC(JSX)%nyear END DO ! !* 1.2 find first sounding to be used diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90 index 5f82142249a0613864b7cbf2feabde6638a214a6..b504d4b1beeac8a1347455eac33184fbd2a63e7f 100644 --- a/src/MNH/ground_paramn.f90 +++ b/src/MNH/ground_paramn.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ########## @@ -503,9 +503,9 @@ IF( NRR >= 7 .AND. SIZE(XINPRH)>0 ) ZSNOW = ZSNOW + XINPRH * XRHOLW ! ---------- ! IF (.NOT. LCARTESIAN) THEN - ZTSUN(:,:) = MOD(TDTCUR%TIME -XTSIDER*3600. +XLON(:,:)*240., XDAY) + ZTSUN(:,:) = MOD(TDTCUR%xtime -XTSIDER*3600. +XLON(:,:)*240., XDAY) ELSE - ZTSUN(:,:) = MOD(TDTCUR%TIME -XTSIDER*3600. +XLON0 *240., XDAY) + ZTSUN(:,:) = MOD(TDTCUR%xtime -XTSIDER*3600. +XLON0 *240., XDAY) END IF ! ! 1.12 Forcing level @@ -588,17 +588,17 @@ END IF ! ! Call to surface schemes ! -CALL COUPLING_SURF_ATM_n(YSURF_CUR,'MESONH', 'E',ZTIMEC, & - XTSTEP, TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%DAY, TDTCUR%TIME, & - IDIM1D,KSV_SURF,SIZE(XSW_BANDS), & - ZP_TSUN, ZP_ZENITH,ZP_ZENITH, ZP_AZIM, & - ZP_ZREF, ZP_ZREF, ZP_ZS, ZP_U, ZP_V, ZP_QA, ZP_TA, ZP_RHOA, ZP_SV, ZP_CO2, YSV_SURF,& - ZP_RAIN, ZP_SNOW, ZP_LW, ZP_DIR_SW, ZP_SCA_SW, XSW_BANDS, ZP_PS, ZP_PA, & - ZP_SFTQ, ZP_SFTH, ZP_SFTS, ZP_SFCO2, ZP_SFU, ZP_SFV, & - ZP_TSRAD, ZP_DIR_ALB, ZP_SCA_ALB, ZP_EMIS, ZP_TSURF, ZP_Z0, ZP_Z0H, ZP_QSURF, & - ZP_PEW_A_COEF, ZP_PEW_B_COEF, & - ZP_PET_A_COEF, ZP_PEQ_A_COEF, ZP_PET_B_COEF, ZP_PEQ_B_COEF,ZP_ZWS, & - 'OK' ) +CALL COUPLING_SURF_ATM_n(YSURF_CUR,'MESONH', 'E',ZTIMEC, & + XTSTEP, TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime, & + IDIM1D,KSV_SURF,SIZE(XSW_BANDS), & + ZP_TSUN, ZP_ZENITH,ZP_ZENITH, ZP_AZIM, & + ZP_ZREF, ZP_ZREF, ZP_ZS, ZP_U, ZP_V, ZP_QA, ZP_TA, ZP_RHOA, ZP_SV, ZP_CO2, YSV_SURF, & + ZP_RAIN, ZP_SNOW, ZP_LW, ZP_DIR_SW, ZP_SCA_SW, XSW_BANDS, ZP_PS, ZP_PA, & + ZP_SFTQ, ZP_SFTH, ZP_SFTS, ZP_SFCO2, ZP_SFU, ZP_SFV, & + ZP_TSRAD, ZP_DIR_ALB, ZP_SCA_ALB, ZP_EMIS, ZP_TSURF, ZP_Z0, ZP_Z0H, ZP_QSURF, & + ZP_PEW_A_COEF, ZP_PEW_B_COEF, & + ZP_PET_A_COEF, ZP_PEQ_A_COEF, ZP_PET_B_COEF, ZP_PEQ_B_COEF,ZP_ZWS, & + 'OK' ) ! #ifdef CPLOASIS IF (LOASIS) THEN diff --git a/src/MNH/ini_aircraft.f90 b/src/MNH/ini_aircraft.f90 index afd5a75e12db813cd087e0064d9420a41dfed798..2df9363014ca83596f600d3a8d27b7bf60d4f77d 100644 --- a/src/MNH/ini_aircraft.f90 +++ b/src/MNH/ini_aircraft.f90 @@ -1,12 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2000-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ $Date$ -!----------------------------------------------------------------- ! ####################### SUBROUTINE INI_AIRCRAFT ! ####################### @@ -135,10 +131,10 @@ TAIRCRAFT1%STEP = 60. ! !* take-off date and time ! -TAIRCRAFT1%LAUNCH%TDATE%YEAR = 2007 -TAIRCRAFT1%LAUNCH%TDATE%MONTH = 04 -TAIRCRAFT1%LAUNCH%TDATE%DAY = 19 -TAIRCRAFT1%LAUNCH%TIME = 32280. +TAIRCRAFT1%LAUNCH%nyear = 2007 +TAIRCRAFT1%LAUNCH%nmonth = 04 +TAIRCRAFT1%LAUNCH%nday = 19 +TAIRCRAFT1%LAUNCH%xtime = 32280. ! !* number of flight segments ! @@ -365,10 +361,10 @@ TAIRCRAFT2%STEP = 60. ! !* take-off date and time ! -TAIRCRAFT2%LAUNCH%TDATE%YEAR = 2007 -TAIRCRAFT2%LAUNCH%TDATE%MONTH = 04 -TAIRCRAFT2%LAUNCH%TDATE%DAY = 19 -TAIRCRAFT2%LAUNCH%TIME = 48060. +TAIRCRAFT2%LAUNCH%nyear = 2007 +TAIRCRAFT2%LAUNCH%nmonth = 04 +TAIRCRAFT2%LAUNCH%nday = 19 +TAIRCRAFT2%LAUNCH%xtime = 48060. ! !* number of flight segments ! @@ -624,10 +620,10 @@ TAIRCRAFT3%STEP = 30. ! !* take-off date and time ! -TAIRCRAFT3%LAUNCH%TDATE%YEAR = 2007 -TAIRCRAFT3%LAUNCH%TDATE%MONTH = 04 -TAIRCRAFT3%LAUNCH%TDATE%DAY = 19 -TAIRCRAFT3%LAUNCH%TIME = 45369 +TAIRCRAFT3%LAUNCH%nyear = 2007 +TAIRCRAFT3%LAUNCH%nmonth = 04 +TAIRCRAFT3%LAUNCH%nday = 19 +TAIRCRAFT3%LAUNCH%xtime = 45369 ! !* number of flight segments ! @@ -731,10 +727,10 @@ TAIRCRAFT4%STEP = 30. ! !* take-off date and time ! -TAIRCRAFT4%LAUNCH%TDATE%YEAR = 2007 -TAIRCRAFT4%LAUNCH%TDATE%MONTH = 04 -TAIRCRAFT4%LAUNCH%TDATE%DAY = 19 -TAIRCRAFT4%LAUNCH%TIME = 60392. +TAIRCRAFT4%LAUNCH%nyear = 2007 +TAIRCRAFT4%LAUNCH%nmonth = 04 +TAIRCRAFT4%LAUNCH%nday = 19 +TAIRCRAFT4%LAUNCH%xtime = 60392. ! !* number of flight segments ! @@ -837,10 +833,10 @@ TAIRCRAFT5%STEP = 30. ! !* take-off date and time ! -TAIRCRAFT5%LAUNCH%TDATE%YEAR = 2007 -TAIRCRAFT5%LAUNCH%TDATE%MONTH = 04 -TAIRCRAFT5%LAUNCH%TDATE%DAY = 19 -TAIRCRAFT5%LAUNCH%TIME = 43380. +TAIRCRAFT5%LAUNCH%nyear = 2007 +TAIRCRAFT5%LAUNCH%nmonth = 04 +TAIRCRAFT5%LAUNCH%nday = 19 +TAIRCRAFT5%LAUNCH%xtime = 43380. ! !* number of flight segments ! @@ -1081,10 +1077,10 @@ TAIRCRAFT6%STEP = 30. ! !* take-off date and time ! -TAIRCRAFT6%LAUNCH%TDATE%YEAR = 2007 -TAIRCRAFT6%LAUNCH%TDATE%MONTH = 04 -TAIRCRAFT6%LAUNCH%TDATE%DAY = 19 -TAIRCRAFT6%LAUNCH%TIME = 55992. +TAIRCRAFT6%LAUNCH%nyear = 2007 +TAIRCRAFT6%LAUNCH%nmonth = 04 +TAIRCRAFT6%LAUNCH%nday = 19 +TAIRCRAFT6%LAUNCH%xtime = 55992. ! !* number of flight segments ! @@ -1322,10 +1318,10 @@ TAIRCRAFT7%STEP = 60. ! !* take-off date and time ! -TAIRCRAFT7%LAUNCH%TDATE%YEAR = 2007 -TAIRCRAFT7%LAUNCH%TDATE%MONTH = 04 -TAIRCRAFT7%LAUNCH%TDATE%DAY = 19 -TAIRCRAFT7%LAUNCH%TIME = 43500. +TAIRCRAFT7%LAUNCH%nyear = 2007 +TAIRCRAFT7%LAUNCH%nmonth = 04 +TAIRCRAFT7%LAUNCH%nday = 19 +TAIRCRAFT7%LAUNCH%xtime = 43500. ! !* number of flight segments ! @@ -1593,10 +1589,10 @@ TAIRCRAFT8%STEP = 60. ! !* take-off date and time ! -TAIRCRAFT8%LAUNCH%TDATE%YEAR = 2007 -TAIRCRAFT8%LAUNCH%TDATE%MONTH = 04 -TAIRCRAFT8%LAUNCH%TDATE%DAY = 22 -TAIRCRAFT8%LAUNCH%TIME = 45720. +TAIRCRAFT8%LAUNCH%nyear = 2007 +TAIRCRAFT8%LAUNCH%nmonth = 04 +TAIRCRAFT8%LAUNCH%nday = 22 +TAIRCRAFT8%LAUNCH%xtime = 45720. ! !* number of flight segments ! @@ -1867,10 +1863,10 @@ TAIRCRAFT9%STEP = 60. ! !* take-off date and time ! -TAIRCRAFT9%LAUNCH%TDATE%YEAR = 2007 -TAIRCRAFT9%LAUNCH%TDATE%MONTH = 04 -TAIRCRAFT9%LAUNCH%TDATE%DAY = 23 -TAIRCRAFT9%LAUNCH%TIME = 28080. +TAIRCRAFT9%LAUNCH%nyear = 2007 +TAIRCRAFT9%LAUNCH%nmonth = 04 +TAIRCRAFT9%LAUNCH%nday = 23 +TAIRCRAFT9%LAUNCH%xtime = 28080. ! !* number of flight segments ! diff --git a/src/MNH/ini_balloon.f90 b/src/MNH/ini_balloon.f90 index 47a98ccc5d56146b09ce149cee76bb19c18cfff1..71e935021ef69f07716cc6491b7613de82328b4f 100644 --- a/src/MNH/ini_balloon.f90 +++ b/src/MNH/ini_balloon.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2000-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 balloon 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ###################### SUBROUTINE INI_BALLOON ! ###################### @@ -139,10 +134,10 @@ TBALLOON1%TITLE = 'CVB1MOBI' ! !* launching date and time ! -TBALLOON1%LAUNCH%TDATE%YEAR = 1999 -TBALLOON1%LAUNCH%TDATE%MONTH = 09 -TBALLOON1%LAUNCH%TDATE%DAY = 19 -TBALLOON1%LAUNCH%TIME = 32460. +TBALLOON1%LAUNCH%nyear = 1999 +TBALLOON1%LAUNCH%nmonth = 09 +TBALLOON1%LAUNCH%nday = 19 +TBALLOON1%LAUNCH%xtime = 32460. ! !* latitude and longitude of launching site (decimal degree) ! @@ -194,10 +189,10 @@ TBALLOON2%TITLE = 'CVB2MOBI' ! !* launching date and time ! -TBALLOON2%LAUNCH%TDATE%YEAR = 1999 -TBALLOON2%LAUNCH%TDATE%MONTH = 09 -TBALLOON2%LAUNCH%TDATE%DAY = 19 -TBALLOON2%LAUNCH%TIME = 39660. +TBALLOON2%LAUNCH%nyear = 1999 +TBALLOON2%LAUNCH%nmonth = 09 +TBALLOON2%LAUNCH%nday = 19 +TBALLOON2%LAUNCH%xtime = 39660. ! !* latitude and longitude of launching site (decimal degree) ! @@ -250,10 +245,10 @@ TBALLOON3%TITLE = 'RSMASE19' ! !* launching date and time ! -TBALLOON3%LAUNCH%TDATE%YEAR = 1999 -TBALLOON3%LAUNCH%TDATE%MONTH = 09 -TBALLOON3%LAUNCH%TDATE%DAY = 19 -TBALLOON3%LAUNCH%TIME = 68400. +TBALLOON3%LAUNCH%nyear = 1999 +TBALLOON3%LAUNCH%nmonth = 09 +TBALLOON3%LAUNCH%nday = 19 +TBALLOON3%LAUNCH%xtime = 68400. ! !* latitude and longitude of launching site (decimal degree) ! @@ -306,10 +301,10 @@ TBALLOON4%TITLE = 'CVB1ACVB' ! !* launching date and time ! -TBALLOON4%LAUNCH%TDATE%YEAR = 1999 -TBALLOON4%LAUNCH%TDATE%MONTH = 09 -TBALLOON4%LAUNCH%TDATE%DAY = 19 -TBALLOON4%LAUNCH%TIME = 32460. +TBALLOON4%LAUNCH%nyear = 1999 +TBALLOON4%LAUNCH%nmonth = 09 +TBALLOON4%LAUNCH%nday = 19 +TBALLOON4%LAUNCH%xtime = 32460. ! !* latitude and longitude of launching site (decimal degree) ! @@ -361,10 +356,10 @@ TBALLOON5%TITLE = 'CVB1DEPA' ! !* launching date and time ! -TBALLOON5%LAUNCH%TDATE%YEAR = 1999 -TBALLOON5%LAUNCH%TDATE%MONTH = 09 -TBALLOON5%LAUNCH%TDATE%DAY = 19 -TBALLOON5%LAUNCH%TIME = 32435. +TBALLOON5%LAUNCH%nyear = 1999 +TBALLOON5%LAUNCH%nmonth = 09 +TBALLOON5%LAUNCH%nday = 19 +TBALLOON5%LAUNCH%xtime = 32435. ! !* latitude and longitude of launching site (decimal degree) ! @@ -416,10 +411,10 @@ TBALLOON6%TITLE = 'CVB1RCVB' ! !* launching date and time ! -TBALLOON6%LAUNCH%TDATE%YEAR = 1999 -TBALLOON6%LAUNCH%TDATE%MONTH = 09 -TBALLOON6%LAUNCH%TDATE%DAY = 19 -TBALLOON6%LAUNCH%TIME = 32460. +TBALLOON6%LAUNCH%nyear = 1999 +TBALLOON6%LAUNCH%nmonth = 09 +TBALLOON6%LAUNCH%nday = 19 +TBALLOON6%LAUNCH%xtime = 32460. ! !* latitude and longitude of launching site (decimal degree) ! @@ -471,10 +466,10 @@ TBALLOON7%TITLE = 'CVB1PISO' ! !* launching date and time ! -TBALLOON7%LAUNCH%TDATE%YEAR = 1999 -TBALLOON7%LAUNCH%TDATE%MONTH = 09 -TBALLOON7%LAUNCH%TDATE%DAY = 19 -TBALLOON7%LAUNCH%TIME = 32460. +TBALLOON7%LAUNCH%nyear = 1999 +TBALLOON7%LAUNCH%nmonth = 09 +TBALLOON7%LAUNCH%nday = 19 +TBALLOON7%LAUNCH%xtime = 32460. ! !* latitude and longitude of launching site (decimal degree) ! diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 74971c319cf08a8ac380513a604908f067456cb1..1e59f88b7f4939a6e3ca684a6a955dae86687166 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -1748,8 +1748,8 @@ NDT_2_WAY(KMI)=4 ! IF ( LUSECHEM .OR. LCHEMDIAG ) THEN IF ((KMI==1).AND.(CPROGRAM == "MESONH".OR.CPROGRAM == "DIAG ")) & - CALL CH_INIT_JVALUES(TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH, & - TDTCUR%TDATE%YEAR, ILUOUT, XCH_TUV_DOBNEW) + CALL CH_INIT_JVALUES(TDTCUR%nday, TDTCUR%nmonth, & + TDTCUR%nyear, ILUOUT, XCH_TUV_DOBNEW) ! IF (LORILAM) THEN CALL CH_AER_MOD_INIT @@ -2460,7 +2460,7 @@ ENDIF !------------------------------------ IF ( LFOREFIRE ) THEN CALL INIT_FOREFIRE_n(KMI, ILUOUT, IP & - , TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%DAY, TDTCUR%TIME, XTSTEP) + , TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime, XTSTEP) END IF #endif diff --git a/src/MNH/ini_radiations.f90 b/src/MNH/ini_radiations.f90 index d05fc31f52d33570f14a188844102bc2235e15a8..883179c8b2dd82f38644f08aec0f048b9684bb41 100644 --- a/src/MNH/ini_radiations.f90 +++ b/src/MNH/ini_radiations.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2003-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -206,19 +206,19 @@ DO JI=1,11 IBIS(JI) = INOBIS(JI)+1 END DO IF ( LFIX_DAT ) THEN ! Ajout PP - IF( MOD(TPDTEXP%TDATE%YEAR,4).EQ.0 ) THEN - ZDATE = REAL(TPDTEXP%TDATE%DAY + IBIS(TPDTEXP%TDATE%MONTH-1)) - 1 + IF( MOD(TPDTEXP%nyear,4).EQ.0 ) THEN + ZDATE = REAL(TPDTEXP%nday + IBIS(TPDTEXP%nmonth-1)) - 1 ZAD = 2.0*XPI*ZDATE/366.0 ELSE - ZDATE = REAL(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTEXP%nday + INOBIS(TPDTEXP%nmonth-1)) - 1 ZAD = 2.0*XPI*ZDATE/365.0 END IF ELSE - IF( MOD(TPDTCUR%TDATE%YEAR,4).EQ.0 ) THEN - ZDATE = REAL(TPDTCUR%TDATE%DAY + IBIS(TPDTCUR%TDATE%MONTH-1)) - 1 + IF( MOD(TPDTCUR%nyear,4).EQ.0 ) THEN + ZDATE = REAL(TPDTCUR%nday + IBIS(TPDTCUR%nmonth-1)) - 1 ZAD = 2.0*XPI*ZDATE/366.0 ELSE - ZDATE = REAL(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTCUR%nday + INOBIS(TPDTCUR%nmonth-1)) - 1 ZAD = 2.0*XPI*ZDATE/365.0 END IF END IF diff --git a/src/MNH/ini_radiations_ecmwf.f90 b/src/MNH/ini_radiations_ecmwf.f90 index b7188358438cab4e72bbd722068802212d4110ab..e8f11de28487376225ce40d9803858ab0ba1308d 100644 --- a/src/MNH/ini_radiations_ecmwf.f90 +++ b/src/MNH/ini_radiations_ecmwf.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -337,7 +337,7 @@ ENDIF ! summer/winter dependency ! IF (LFIX_DAT ) THEN ! Ajout PP - IF( (TPDTEXP%TDATE%MONTH.GE.4).AND.(TPDTEXP%TDATE%MONTH.LE.9) ) THEN + IF( (TPDTEXP%nmonth.GE.4).AND.(TPDTEXP%nmonth.LE.9) ) THEN GSUMMER = .TRUE. GWINTER = .FALSE. ELSE @@ -345,7 +345,7 @@ IF (LFIX_DAT ) THEN ! Ajout PP GWINTER = .TRUE. END IF ELSE - IF( (TPDTCUR%TDATE%MONTH.GE.4).AND.(TPDTCUR%TDATE%MONTH.LE.9) ) THEN + IF( (TPDTCUR%nmonth.GE.4).AND.(TPDTCUR%nmonth.LE.9) ) THEN GSUMMER = .TRUE. GWINTER = .FALSE. ELSE @@ -518,11 +518,11 @@ END IF ALLOCATE (ZOZON(KDLON,KFLEV)) ! IF (LFIX_DAT ) THEN ! Ajout PP - ZYMD = TPDTEXP%TDATE%YEAR * 1E4 + TPDTEXP%TDATE%MONTH * 1E2 + TPDTEXP%TDATE%DAY - ZHOURS = INT(TPDTEXP%TIME / 60.) + ZYMD = TPDTEXP%nyear * 1E4 + TPDTEXP%nmonth * 1E2 + TPDTEXP%nday + ZHOURS = INT(TPDTEXP%xtime / 60.) ELSE - ZYMD = TPDTCUR%TDATE%YEAR * 1E4 + TPDTCUR%TDATE%MONTH * 1E2 + TPDTCUR%TDATE%DAY - ZHOURS = INT(TPDTCUR%TIME / 60.) + ZYMD = TPDTCUR%nyear * 1E4 + TPDTCUR%nmonth * 1E2 + TPDTCUR%nday + ZHOURS = INT(TPDTCUR%xtime / 60.) END IF ! ! Fortuin langematz climatology loading diff --git a/src/MNH/init_ground_paramn.f90 b/src/MNH/init_ground_paramn.f90 index ab38093a91a8ed15fc7aaf8827a32865388c0c10..95b13ded39772be285af6ed0e2cf04ee1a72f36e 100644 --- a/src/MNH/init_ground_paramn.f90 +++ b/src/MNH/init_ground_paramn.f90 @@ -191,12 +191,12 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('DTCUR',IID,IRESP) TZTCUR=>TFIELDLIST(IID)%TFIELD_T0D(1)%DATA ! TZDATE = TZTCUR -TZDATE%TIME = TZDATE%TIME + NSTOP * XTSTEP +TZDATE%xtime = TZDATE%xtime + NSTOP * XTSTEP CALL DATETIME_CORRECTDATE(TZDATE) !Done field by field because TYPE(DATE) different in MesoNH and SURFEX -TDATE_END%YEAR = TZDATE%TDATE%YEAR -TDATE_END%MONTH = TZDATE%TDATE%MONTH -TDATE_END%DAY = TZDATE%TDATE%DAY +TDATE_END%YEAR = TZDATE%nyear +TDATE_END%MONTH = TZDATE%nmonth +TDATE_END%DAY = TZDATE%nday ! DO JLAYER=NSV_SNWBEG,NSV_SNWEND HSV(JLAYER) = TRIM(CSNOWNAMES(JLAYER-NSV_SNWBEG+1)) @@ -220,13 +220,13 @@ ELSE ENDIF CALL INIT_SURF_ATM_n(YSURF_CUR,'MESONH',HINIT,.FALSE., & ILU,ISV,SIZE(PSW_BANDS), & - YSV_SURF,ZCO2,ZRHODREF, & + YSV_SURF,ZCO2,ZRHODREF, & ZZENITH,ZAZIM,PSW_BANDS,ZDIR_ALB,ZSCA_ALB, & ZEMIS,ZTSRAD,ZTSURF, & - TZTCUR%TDATE%YEAR, TZTCUR%TDATE%MONTH, & - TZTCUR%TDATE%DAY, TZTCUR%TIME, & + TZTCUR%nyear, TZTCUR%nmonth, & + TZTCUR%nday, TZTCUR%xtime, & TDATE_END,' ',' ', & - 'OK' ) + 'OK' ) ! PDIR_ALB = XUNDEF PSCA_ALB = XUNDEF diff --git a/src/MNH/mnh2lpdm_ech.f90 b/src/MNH/mnh2lpdm_ech.f90 index 7602cbaedeb897c40394f7621d8ef34b8278d706..f116da388263b5182232d0b5bb1f1201326d1d00 100644 --- a/src/MNH/mnh2lpdm_ech.f90 +++ b/src/MNH/mnh2lpdm_ech.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2009-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2009-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -83,10 +83,10 @@ CALL IO_File_open(TPFILE) ! CALL IO_Field_read(TPFILE,'DTCUR',TZDTCUR) ! -ICURAA=MOD(TZDTCUR%TDATE%YEAR,100) ! Annee sur 2 caracteres. -ICURMM=TZDTCUR%TDATE%MONTH -ICURJJ=TZDTCUR%TDATE%DAY -ICURSS=NINT(TZDTCUR%TIME) +ICURAA=MOD(TZDTCUR%nyear,100) ! Annee sur 2 caracteres. +ICURMM=TZDTCUR%nmonth +ICURJJ=TZDTCUR%nday +ICURSS=NINT(TZDTCUR%xtime) ! ICURMN = NINT( (REAL(ICURSS)/60.0)/5.0 )*5 ! Heure arrondie a 5 minutes pres. ICURSS = 0 diff --git a/src/MNH/mnh2lpdm_ini.f90 b/src/MNH/mnh2lpdm_ini.f90 index 0d317661df0526b0141eab771a1efda2892fba32..6cf4bfab075a70454fbd862514327112a409a6f5 100644 --- a/src/MNH/mnh2lpdm_ini.f90 +++ b/src/MNH/mnh2lpdm_ini.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2009-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2009-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -114,27 +114,27 @@ CALL IO_Field_read(TPFILE2,'DTCUR',TZDTCUR2) CALL DATETIME_DISTANCE(TZDTEXP1,TZDTCUR1,ZECHEANCE1) CALL DATETIME_DISTANCE(TZDTEXP1,TZDTCUR2,ZECHEANCE2) ! -IHHMDL=INT(TZDTEXP1%TIME/3600) -IMNMDL=INT((TZDTEXP1%TIME-IHHMDL*3600)/60) -ISSMDL=INT(TZDTEXP1%TIME-IHHMDL*3600-IMNMDL*60) -IHHCUR1=INT(TZDTCUR1%TIME/3600) -IMNCUR1=INT((TZDTCUR1%TIME-IHHCUR1*3600)/60) -ISSCUR1=INT(TZDTCUR1%TIME-IHHCUR1*3600-IMNCUR1*60) -IHHCUR2=INT(TZDTCUR2%TIME/3600) -IMNCUR2=INT((TZDTCUR2%TIME-IHHCUR2*3600)/60) -ISSCUR2=INT(TZDTCUR2%TIME-IHHCUR2*3600-IMNCUR2*60) -! -WRITE(YDATMDL, '(I4.4,5I2.2)') TZDTEXP1%TDATE%YEAR, TZDTEXP1%TDATE%MONTH, TZDTEXP1%TDATE%DAY, & +IHHMDL=INT(TZDTEXP1%xtime/3600) +IMNMDL=INT((TZDTEXP1%xtime-IHHMDL*3600)/60) +ISSMDL=INT(TZDTEXP1%xtime-IHHMDL*3600-IMNMDL*60) +IHHCUR1=INT(TZDTCUR1%xtime/3600) +IMNCUR1=INT((TZDTCUR1%xtime-IHHCUR1*3600)/60) +ISSCUR1=INT(TZDTCUR1%xtime-IHHCUR1*3600-IMNCUR1*60) +IHHCUR2=INT(TZDTCUR2%xtime/3600) +IMNCUR2=INT((TZDTCUR2%xtime-IHHCUR2*3600)/60) +ISSCUR2=INT(TZDTCUR2%xtime-IHHCUR2*3600-IMNCUR2*60) +! +WRITE(YDATMDL, '(I4.4,5I2.2)') TZDTEXP1%nyear, TZDTEXP1%nmonth, TZDTEXP1%nday, & IHHMDL, IMNMDL, ISSMDL -WRITE(YDATCUR1,'(I4.4,5I2.2)') TZDTCUR1%TDATE%YEAR, TZDTCUR1%TDATE%MONTH, TZDTCUR1%TDATE%DAY, & +WRITE(YDATCUR1,'(I4.4,5I2.2)') TZDTCUR1%nyear, TZDTCUR1%nmonth, TZDTCUR1%nday, & IHHCUR1, IMNCUR1, ISSCUR1 -WRITE(YDATCUR2,'(I4.4,5I2.2)') TZDTCUR2%TDATE%YEAR, TZDTCUR2%TDATE%MONTH, TZDTCUR2%TDATE%DAY, & +WRITE(YDATCUR2,'(I4.4,5I2.2)') TZDTCUR2%nyear, TZDTCUR2%nmonth, TZDTCUR2%nday, & IHHCUR2, IMNCUR2, ISSCUR2 ! -NMDLAA=MOD( TZDTEXP1%TDATE%YEAR, 100 ) ! Annee arrondi a 2 chiffres. -NMDLMM=TZDTEXP1%TDATE%MONTH -NMDLJJ=TZDTEXP1%TDATE%DAY -NMDLSS=NINT(TZDTEXP1%TIME) +NMDLAA=MOD( TZDTEXP1%nyear, 100 ) ! Annee arrondi a 2 chiffres. +NMDLMM=TZDTEXP1%nmonth +NMDLJJ=TZDTEXP1%nday +NMDLSS=NINT(TZDTEXP1%xtime) ! !* Heure du modele arrondie a 5 minutes pres. ! diff --git a/src/MNH/modd_type_date.f90 b/src/MNH/modd_type_date.f90 index 76fb6b097a9ea8edea0375ff7ac30bb47afe98bd..e9717d3217f8f2e43f1f56877fd1b8eb0c24df64 100644 --- a/src/MNH/modd_type_date.f90 +++ b/src/MNH/modd_type_date.f90 @@ -1,11 +1,11 @@ -!MNH_LIC Copyright 1997-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1997-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -! ################# - MODULE MODD_TYPE_DATE -! ################# +!#################### +module modd_type_date +!#################### ! !!**** *MODD_TYPE_DATE* - declaration of temporal types !! @@ -31,24 +31,24 @@ !! ------------- !! Original 11/08/97 ! P. Wautelet 24/07/2019: set default values +! P. Wautelet 17/12/2020: restructure type date_time !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ -! + use modd_parameters, only: NNEGUNDEF, XNEGUNDEF -IMPLICIT NONE -! -TYPE DATE - INTEGER :: YEAR = NNEGUNDEF - INTEGER :: MONTH = 0 - INTEGER :: DAY = 0 -END TYPE DATE +implicit none + +type date + integer :: nyear = NNEGUNDEF + integer :: nmonth = 0 + integer :: nday = 0 +end type date ! -TYPE DATE_TIME - TYPE (DATE) :: TDATE - REAL :: TIME = XNEGUNDEF -END TYPE DATE_TIME +type, extends( date ) :: date_time + real :: xtime = XNEGUNDEF +end type date_time ! -END MODULE MODD_TYPE_DATE +end module modd_type_date diff --git a/src/MNH/mode_datetime.f90 b/src/MNH/mode_datetime.f90 index b6547cfa9cb7714be3b7c73a5d0f12d9b1398777..a1911cc21ce19c769351c930809d79c0f555bb57 100644 --- a/src/MNH/mode_datetime.f90 +++ b/src/MNH/mode_datetime.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2018-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -23,7 +23,7 @@ PUBLIC :: OPERATOR(>=) ! !Reference date (do not change it) !To work with DATETIME_TIME2REFERENCE, we assume the year is a multiple of 400 + 1 and the date is January 1st (and time=0.) -TYPE(DATE_TIME),PARAMETER :: TPREFERENCE_DATE = DATE_TIME( TDATE=DATE(1601,1,1), TIME=0. ) +TYPE(DATE_TIME),PARAMETER :: TPREFERENCE_DATE = DATE_TIME( nyear = 1601, nmonth = 1, nday =1 , xtime = 0. ) ! INTERFACE OPERATOR(<) MODULE PROCEDURE DATETIME_LT @@ -57,10 +57,10 @@ IDAYS = 0_MNHINT64 TZDATE = TPDATE CALL DATETIME_CORRECTDATE(TZDATE) ! -IYEAR_CUR = int( TZDATE%TDATE%YEAR, kind=MNHINT64 ) -IMONTH_CUR = int( TZDATE%TDATE%MONTH, kind=MNHINT64 ) -IDAY_CUR = int( TZDATE%TDATE%DAY, kind=MNHINT64 ) -ZSEC = TZDATE%TIME +IYEAR_CUR = int( TZDATE%nyear, kind=MNHINT64 ) +IMONTH_CUR = int( TZDATE%nmonth, kind=MNHINT64 ) +IDAY_CUR = int( TZDATE%nday, kind=MNHINT64 ) +ZSEC = TZDATE%xtime ! !Compute number of days since beginning of the year IF ( ((MOD(IYEAR_CUR,4_MNHINT64)==0).AND.(MOD(IYEAR_CUR,100_MNHINT64)/=0)) .OR. (MOD(IYEAR_CUR,400_MNHINT64)==0)) ILEAPS=1 @@ -91,7 +91,7 @@ SELECT CASE(IMONTH_CUR) IDAYS = IDAY_CUR-1+31+28+ILEAPS+31+30+31+30+31+31+30+31+30 END SELECT ! -IYEARS = IYEAR_CUR - int( TPREFERENCE_DATE%TDATE%YEAR, kind=MNHINT64 ) +IYEARS = IYEAR_CUR - int( TPREFERENCE_DATE%nyear, kind=MNHINT64 ) IF ( IYEARS < 0_MNHINT64 ) THEN CALL PRINT_MSG(NVERB_WARNING,'GEN','DATETIME_TIME2REFERENCE', & 'input year is smaller than reference year => result could be invalid') @@ -142,14 +142,14 @@ INTEGER :: IMONTH_LGT !Number of days in a month LOGICAL :: GKO REAL :: ZSEC !Current time of the day (in seconds) ! -IYEAR_CUR = TPDATE%TDATE%YEAR -IMONTH_CUR = TPDATE%TDATE%MONTH -IDAY_CUR = TPDATE%TDATE%DAY -ZSEC = TPDATE%TIME +IYEAR_CUR = TPDATE%nyear +IMONTH_CUR = TPDATE%nmonth +IDAY_CUR = TPDATE%nday +ZSEC = TPDATE%xtime ! print *,'DATETIME_CORRECTDATE in: ',IYEAR_CUR,IMONTH_CUR,IDAY_CUR,ZSEC ! CALL DATETIME_GETMONTHLGT(IYEAR_CUR,IMONTH_CUR,IMONTH_LGT) -IF (TPDATE%TIME<0. .OR. TPDATE%TIME>=86400. .OR. & +IF (TPDATE%xtime<0. .OR. TPDATE%xtime>=86400. .OR. & IDAY_CUR<1 .OR. IDAY_CUR>IMONTH_LGT .OR. & IMONTH_CUR<1 .OR. IMONTH_CUR>12 ) THEN GKO = .TRUE. @@ -157,12 +157,12 @@ ELSE GKO = .FALSE. END IF ! -IF (TPDATE%TIME<0.) THEN +IF (TPDATE%xtime<0.) THEN !Number of days to remove - IDAYS = INT(TPDATE%TIME/86400.)-1 -ELSE IF (TPDATE%TIME>=86400.) THEN + IDAYS = INT(TPDATE%xtime/86400.)-1 +ELSE IF (TPDATE%xtime>=86400.) THEN !Number of days to add - IDAYS = INT(TPDATE%TIME/86400.) + IDAYS = INT(TPDATE%xtime/86400.) ELSE IDAYS = 0 END IF @@ -211,10 +211,10 @@ DO WHILE (GKO) END DO ! print *,'DATETIME_CORRECTDATE out:',IYEAR_CUR,IMONTH_CUR,IDAY_CUR,ZSEC ! -TPDATE%TDATE%YEAR = IYEAR_CUR -TPDATE%TDATE%MONTH = IMONTH_CUR -TPDATE%TDATE%DAY = IDAY_CUR -TPDATE%TIME = ZSEC +TPDATE%nyear = IYEAR_CUR +TPDATE%nmonth = IMONTH_CUR +TPDATE%nday = IDAY_CUR +TPDATE%xtime = ZSEC ! END SUBROUTINE DATETIME_CORRECTDATE ! @@ -251,18 +251,18 @@ TYPE(DATE_TIME), INTENT(IN) :: TPT1, TPT2 ! TRUE if TPT1 .LT. TPT2 ! ! -IF ( TPT1%TDATE%YEAR .EQ. TPT2%TDATE%YEAR ) THEN - IF ( TPT1%TDATE%MONTH .EQ. TPT2%TDATE%MONTH ) THEN - IF ( TPT1%TDATE%DAY .EQ. TPT2%TDATE%DAY ) THEN - OLT = TPT1%TIME .LT. TPT2%TIME +IF ( TPT1%nyear .EQ. TPT2%nyear ) THEN + IF ( TPT1%nmonth .EQ. TPT2%nmonth ) THEN + IF ( TPT1%nday .EQ. TPT2%nday ) THEN + OLT = TPT1%xtime .LT. TPT2%xtime ELSE - OLT = TPT1%TDATE%DAY .LT. TPT2%TDATE%DAY + OLT = TPT1%nday .LT. TPT2%nday END IF ELSE - OLT = TPT1%TDATE%MONTH .LT. TPT2%TDATE%MONTH + OLT = TPT1%nmonth .LT. TPT2%nmonth END IF ELSE - OLT = TPT1%TDATE%YEAR .LT. TPT2%TDATE%YEAR + OLT = TPT1%nyear .LT. TPT2%nyear ENDIF ! END FUNCTION DATETIME_LT diff --git a/src/MNH/mode_les_diachro.f90 b/src/MNH/mode_les_diachro.f90 index 87405ef839bc5eb8bee387c9883abc7e35f2c52b..9031c723c2c6a638bf9b012ce1e47dad036dbb7c 100644 --- a/src/MNH/mode_les_diachro.f90 +++ b/src/MNH/mode_les_diachro.f90 @@ -500,10 +500,10 @@ DO JAVG=1,IAVG END DO END DO - tpdates(javg )%tdate%year = tdtseg%tdate%year - tpdates(javg )%tdate%month = tdtseg%tdate%month - tpdates(javg )%tdate%day = tdtseg%tdate%day - tpdates(javg )%time = tdtseg%time + ( zles_temp_mean_start + zles_temp_mean_end ) / 2. + tpdates(javg)%nyear = tdtseg%nyear + tpdates(javg)%nmonth = tdtseg%nmonth + tpdates(javg)%nday = tdtseg%nday + tpdates(javg)%xtime = tdtseg%xtime + ( zles_temp_mean_start + zles_temp_mean_end ) / 2. call Datetime_correctdate( tpdates(javg ) ) END DO ! @@ -597,10 +597,10 @@ do javg = 1, iavg end do end do - tpdates(javg)%tdate%year = tdtseg%tdate%year - tpdates(javg)%tdate%month = tdtseg%tdate%month - tpdates(javg)%tdate%day = tdtseg%tdate%day - tpdates(javg)%time = tdtseg%time + ( zles_temp_mean_start + zles_temp_mean_end ) / 2. + tpdates(javg)%nyear = tdtseg%nyear + tpdates(javg)%nmonth = tdtseg%nmonth + tpdates(javg)%nday = tdtseg%nday + tpdates(javg)%xtime = tdtseg%xtime + ( zles_temp_mean_start + zles_temp_mean_end ) / 2. call Datetime_correctdate( tpdates(javg) ) end do diff --git a/src/MNH/mode_time.f90 b/src/MNH/mode_time.f90 index 0f71113f9732af5805bcaf076a82aab890f3862a..86b9dbadbc4e137a197ac5f20c53de237bd9926a 100644 --- a/src/MNH/mode_time.f90 +++ b/src/MNH/mode_time.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -113,8 +113,8 @@ INTEGER :: ILUOUT !* 1. CONVERT TIME IN HOURS,MINUTES AND SECONDS : ! ------------------------------------------ ! -IHOUR = INT(TPDATETIME%TIME/3600.) -ZREMAIN = MOD(TPDATETIME%TIME,3600.) +IHOUR = INT(TPDATETIME%xtime/3600.) +ZREMAIN = MOD(TPDATETIME%xtime,3600.) IMINUTE = INT(ZREMAIN/60.) ZSECOND = MOD(ZREMAIN,60.) ! @@ -126,22 +126,22 @@ ZSECOND = MOD(ZREMAIN,60.) ILUOUT = TPOUTFILE%NLU ! IF (PRESENT(HTITLE)) THEN - IF ((TPDATETIME%TDATE%YEAR < 0).OR.(TPDATETIME%TDATE%MONTH < 0).OR. & - (TPDATETIME%TDATE%DAY < 0) ) THEN + IF ((TPDATETIME%nyear < 0).OR.(TPDATETIME%nmonth < 0).OR. & + (TPDATETIME%nday < 0) ) THEN WRITE(UNIT=ILUOUT,FMT='(1X,A," :",2X,I2.2,"H",I2.2,"M", & & F5.2,"S")') HTITLE, IHOUR,IMINUTE,ZSECOND ELSE WRITE(UNIT=ILUOUT,FMT='(1X,A," :",I4.4,I2.2,I2.2,2X,I2.2,"H",I2.2,"M", & - & F5.2,"S")') HTITLE, TPDATETIME%TDATE, IHOUR,IMINUTE,ZSECOND + & F5.2,"S")') HTITLE, TPDATETIME%nyear, TPDATETIME%nmonth, TPDATETIME%nday, IHOUR,IMINUTE,ZSECOND END IF ELSE - IF ((TPDATETIME%TDATE%YEAR < 0).OR.(TPDATETIME%TDATE%MONTH < 0).OR. & - (TPDATETIME%TDATE%DAY < 0) ) THEN + IF ((TPDATETIME%nyear < 0).OR.(TPDATETIME%nmonth < 0).OR. & + (TPDATETIME%nday < 0) ) THEN WRITE(UNIT=ILUOUT,FMT='(1X,2X,I2.2,"H",I2.2,"M", & & F5.2,"S")') IHOUR,IMINUTE,ZSECOND ELSE WRITE(UNIT=ILUOUT,FMT='(1X,I4.4,I2.2,I2.2,2X,I2.2,"H",I2.2,"M", & - & F5.2,"S")') TPDATETIME%TDATE, IHOUR,IMINUTE,ZSECOND + & F5.2,"S")') TPDATETIME%nyear, TPDATETIME%nmonth, TPDATETIME%nday, IHOUR,IMINUTE,ZSECOND END IF END IF !------------------------------------------------------------------------------- diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index 494ae993e486ac0c11ae033467ca6d17d6da8074..d50b8881a4b286cacc58631e0de9b997c030406b 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -2066,7 +2066,7 @@ END IF !* 27. CURRENT TIME REFRESH ! -------------------- ! -TDTCUR%TIME=TDTCUR%TIME + XTSTEP +TDTCUR%xtime=TDTCUR%xtime + XTSTEP CALL DATETIME_CORRECTDATE(TDTCUR) ! !------------------------------------------------------------------------------- diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90 index 98c8c94d7ed67137cfe26cdc5384df2984f11fe3..50988a348aaba05c0c3ec917f61b7bdbdc4cd138 100644 --- a/src/MNH/paspol.f90 +++ b/src/MNH/paspol.f90 @@ -316,7 +316,7 @@ IF (GPPFIRSTCALL) THEN !* 1.3 Chronologie du rejet. ! ! Eclatement des dates caracteristiques et calcul du - ! nombre de secondes depuis 0UTC (equiv. TDTCUR%TIME). + ! nombre de secondes depuis 0UTC (equiv. TDTCUR%xtime). ! READ(CPPT1(JSV),'(I4,5I2)') I1YY,I1MM,I1DD,I1HH,I1MN,I1SS READ(CPPT2(JSV),'(I4,5I2)') I2YY,I2MM,I2DD,I2HH,I2MN,I2SS @@ -330,10 +330,10 @@ IF (GPPFIRSTCALL) THEN ! Chrono relative au debut du rejet en secondes. ! ZT1=0. - TZDATE1%TDATE%YEAR=I1YY;TZDATE1%TDATE%MONTH=I1MM;TZDATE1%TDATE%DAY=I1DD;TZDATE1%TIME=Z1SEC - TZDATE2%TDATE%YEAR=I2YY;TZDATE2%TDATE%MONTH=I2MM;TZDATE2%TDATE%DAY=I2DD;TZDATE2%TIME=Z2SEC - TZDATE3%TDATE%YEAR=I3YY;TZDATE3%TDATE%MONTH=I3MM;TZDATE3%TDATE%DAY=I3DD;TZDATE3%TIME=Z3SEC - TZDATE4%TDATE%YEAR=I4YY;TZDATE4%TDATE%MONTH=I4MM;TZDATE4%TDATE%DAY=I4DD;TZDATE4%TIME=Z4SEC + TZDATE1%nyear=I1YY;TZDATE1%nmonth=I1MM;TZDATE1%nday=I1DD;TZDATE1%xtime=Z1SEC + TZDATE2%nyear=I2YY;TZDATE2%nmonth=I2MM;TZDATE2%nday=I2DD;TZDATE2%xtime=Z2SEC + TZDATE3%nyear=I3YY;TZDATE3%nmonth=I3MM;TZDATE3%nday=I3DD;TZDATE3%xtime=Z3SEC + TZDATE4%nyear=I4YY;TZDATE4%nmonth=I4MM;TZDATE4%nday=I4DD;TZDATE4%xtime=Z4SEC CALL DATETIME_DISTANCE(TZDATE1,TZDATE2,ZT2) CALL DATETIME_DISTANCE(TZDATE1,TZDATE3,ZT3) CALL DATETIME_DISTANCE(TZDATE1,TZDATE4,ZT4) @@ -475,7 +475,7 @@ DO JSV=1,NSV_PP ! !* 2.2 Distance temporelle DEPUIS le debut de rejet. ! - TZDATE%TDATE%YEAR=IDEBYY(JSV);TZDATE%TDATE%MONTH=IDEBMM(JSV);TZDATE%TDATE%DAY=IDEBDD(JSV);TZDATE%TIME=ZDEBSS(JSV) + TZDATE%nyear=IDEBYY(JSV);TZDATE%nmonth=IDEBMM(JSV);TZDATE%nday=IDEBDD(JSV);TZDATE%xtime=ZDEBSS(JSV) CALL DATETIME_DISTANCE(TZDATE,TDTCUR,ZDEPUIS) ! ! diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90 index 5354a0b37b7315f50fbf5750dd3c3320dbcbf75b..9b9213708b7990a757e69fb3097c1ec15d62fcf2 100644 --- a/src/MNH/phys_paramn.f90 +++ b/src/MNH/phys_paramn.f90 @@ -699,7 +699,7 @@ CALL SUNPOS_n ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL ) ! ------------------------------ ! CASE('FIXE') - ZTIME = MOD(TDTCUR%TIME +XLON0*240., XDAY) + ZTIME = MOD(TDTCUR%xtime +XLON0*240., XDAY) IHOUR = INT( ZTIME/3600. ) IF (IHOUR < 0) IHOUR=IHOUR + 24 ZDT = ZTIME/3600. - REAL(IHOUR) diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index 92a0d12fffff21e899e91175ec51789407e85225..2aae993516e3c030d31fc03774e1079464f0ef59 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -1757,10 +1757,10 @@ IF (CSURF =='EXTE') THEN TPGDFILE => TINIFILEPGD ELSE ! ... or read from file. - CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PGD', & - ' ',' ',& - TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, & - TDTCUR%TDATE%DAY, TDTCUR%TIME ) + CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PGD', & + ' ', ' ', & + TDTCUR%nyear, TDTCUR%nmonth, & + TDTCUR%nday, TDTCUR%xtime ) ! END IF ! diff --git a/src/MNH/prep_surf_mnh.f90 b/src/MNH/prep_surf_mnh.f90 index 0e6c02cfbdaeba34678e247617addfc33b6a3605..ce8b407d2da8c781e5d9711324f971594fa9a102 100644 --- a/src/MNH/prep_surf_mnh.f90 +++ b/src/MNH/prep_surf_mnh.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2004-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2004-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -94,9 +94,8 @@ YATMFILETYPE = HATMFILETYPE IF(YATMFILETYPE=='GRIBEX') YATMFILETYPE='GRIB ' IF (LEN_TRIM(HATMFILE)==0) YATMFILETYPE=' ' ! -CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PRE',HATMFILE,YATMFILETYPE, & - TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, & - TDTCUR%TDATE%DAY, TDTCUR%TIME ) +CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PRE', HATMFILE, YATMFILETYPE, & + TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime ) CALL PREP_SURF_ATM(YSURF_CUR,'MESONH',HATMFILE,YATMFILETYPE,HATMFILE,YATMFILETYPE,YLCTL) IF (PRESENT(OINIFILEOPEN)) THEN !This is done here because model dimensions were not known before this call (for PREP_SURFEX) diff --git a/src/MNH/prep_surfex.f90 b/src/MNH/prep_surfex.f90 index 33b73f410fc072d8dd89a28ab8dc55db185b285a..8493ac43da7fbc0362702f02ade48fdbd8ac639e 100644 --- a/src/MNH/prep_surfex.f90 +++ b/src/MNH/prep_surfex.f90 @@ -161,10 +161,10 @@ IF (YATMFILETYPE=='MESONH') THEN CALL IO_Field_read(TZATMFILE,'DTCUR',TDTCUR) CALL IO_File_close(TZATMFILE) ELSE - TDTCUR%TDATE%YEAR = NUNDEF - TDTCUR%TDATE%MONTH= NUNDEF - TDTCUR%TDATE%DAY = NUNDEF - TDTCUR%TIME = XUNDEF + TDTCUR%nyear = NUNDEF + TDTCUR%nmonth = NUNDEF + TDTCUR%nday = NUNDEF + TDTCUR%xtime = XUNDEF END IF ! CALL SURFEX_ALLOC_LIST(1) diff --git a/src/MNH/profilern.f90 b/src/MNH/profilern.f90 index a311590ffb2047a34726c276c78d3f0797a3b8c1..05f09d32850add426ffe5d97336c3388b6da86f2 100644 --- a/src/MNH/profilern.f90 +++ b/src/MNH/profilern.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -256,7 +256,7 @@ IF (GSTORE) THEN tprofiler%tpdates(in)%date%year = tdtexp%date%year tprofiler%tpdates(in)%date%month = tdtexp%date%month tprofiler%tpdates(in)%date%day = tdtexp%date%day - tprofiler%tpdates(in)%time = tdtexp%time + ( in - 1 ) * tprofiler%step + tprofiler%tpdates(in)%xtime = tdtexp%xtime + ( in - 1 ) * tprofiler%step #else tprofiler%tpdates(in) = tdtcur #endif diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90 index b38be9d78b33525a200a7a18ae524c304ecea68d..489250ef78506a39064227683497390188008704 100644 --- a/src/MNH/read_all_data_grib_case.f90 +++ b/src/MNH/read_all_data_grib_case.f90 @@ -1661,24 +1661,24 @@ END IF WRITE (ILUOUT0,'(A)') ' | Reading date' CALL GRIB_GET(IGRIB(INUM),'dataDate',IDATE,IRET_GRIB) CALL GRIB_GET(IGRIB(INUM),'dataTime',ITIME,IRET_GRIB) -TPTCUR%TIME=ITIME/100*3600+(ITIME-(ITIME/100)*100)*60 -TPTCUR%TDATE%YEAR=IDATE/10000 -TPTCUR%TDATE%MONTH=INT((IDATE-TPTCUR%TDATE%YEAR*10000)/100) -TPTCUR%TDATE%DAY=IDATE-TPTCUR%TDATE%YEAR*10000-TPTCUR%TDATE%MONTH*100 +TPTCUR%xtime=ITIME/100*3600+(ITIME-(ITIME/100)*100)*60 +TPTCUR%nyear=IDATE/10000 +TPTCUR%nmonth=INT((IDATE-TPTCUR%nyear*10000)/100) +TPTCUR%nday=IDATE-TPTCUR%nyear*10000-TPTCUR%nmonth*100 CALL GRIB_GET(IGRIB(INUM),'startStep',ITIMESTEP,IRET_GRIB) CALL GRIB_GET(IGRIB(INUM),'stepUnits',CSTEPUNIT,IRET_GRIB) IF (IMODEL==0) THEN ITWOZS=0 - IF ((TPTCUR%TDATE%YEAR ==2000).AND.(TPTCUR%TDATE%MONTH >11)) ITWOZS=1 - IF ((TPTCUR%TDATE%YEAR ==2000).AND.(TPTCUR%TDATE%MONTH ==11)) THEN - IF ( (TPTCUR%TDATE%DAY >20 ) .OR. & - ((TPTCUR%TDATE%DAY ==20 ).AND.(TPTCUR%TIME >=64800 ))) ITWOZS=1 + IF ((TPTCUR%nyear ==2000).AND.(TPTCUR%nmonth >11)) ITWOZS=1 + IF ((TPTCUR%nyear ==2000).AND.(TPTCUR%nmonth ==11)) THEN + IF ( (TPTCUR%nday >20 ) .OR. & + ((TPTCUR%nday ==20 ).AND.(TPTCUR%xtime >=64800 ))) ITWOZS=1 END IF - IF ( TPTCUR%TDATE%YEAR ==2001 ) ITWOZS=1 - IF ((TPTCUR%TDATE%YEAR ==2002).AND.(TPTCUR%TDATE%MONTH <11)) ITWOZS=1 - IF ((TPTCUR%TDATE%YEAR ==2002).AND.(TPTCUR%TDATE%MONTH ==11)) THEN - IF ( (TPTCUR%TDATE%DAY <24 ) .OR. & - ((TPTCUR%TDATE%DAY ==25 ).AND.(TPTCUR%TIME <64800 ))) ITWOZS=1 + IF ( TPTCUR%nyear ==2001 ) ITWOZS=1 + IF ((TPTCUR%nyear ==2002).AND.(TPTCUR%nmonth <11)) ITWOZS=1 + IF ((TPTCUR%nyear ==2002).AND.(TPTCUR%nmonth ==11)) THEN + IF ( (TPTCUR%nday <24 ) .OR. & + ((TPTCUR%nday ==25 ).AND.(TPTCUR%xtime <64800 ))) ITWOZS=1 END IF IF (ITWOZS==1) & WRITE(ILUOUT0,*) ' Check that both orography fields on 1st model level and on surface are used.' @@ -1689,11 +1689,11 @@ CALL MPPDB_CHECK3D(XV_LS,"XV_LS",PRECISION) SELECT CASE (CSTEPUNIT) ! Time unit indicator CASE ('h') !hour - TPTCUR%TIME = TPTCUR%TIME + ITIMESTEP*3600. + TPTCUR%xtime = TPTCUR%xtime + ITIMESTEP*3600. CASE ('m') !minute - TPTCUR%TIME = TPTCUR%TIME + ITIMESTEP*60. + TPTCUR%xtime = TPTCUR%xtime + ITIMESTEP*60. CASE ('s') !minute - TPTCUR%TIME = TPTCUR%TIME + ITIMESTEP + TPTCUR%xtime = TPTCUR%xtime + ITIMESTEP CASE DEFAULT WRITE (ILUOUT0,'(A,A,A)') ' | error CSTEPUNIT=',CSTEPUNIT, ' is different of s,m or h' END SELECT diff --git a/src/MNH/read_surf_mnh.f90 b/src/MNH/read_surf_mnh.f90 index 8e2f8faba2e0bbbf064636a97f8b033ecd586d3a..f051ed7393a5eb3042200c278fb0c6af3ebcbf0a 100644 --- a/src/MNH/read_surf_mnh.f90 +++ b/src/MNH/read_surf_mnh.f90 @@ -1739,10 +1739,10 @@ IF (KRESP /=0) THEN WRITE(ILUOUT,*) ' ' ENDIF ! -KYEAR = TZDATETIME%TDATE%YEAR -KMONTH = TZDATETIME%TDATE%MONTH -KDAY = TZDATETIME%TDATE%DAY -PTIME = TZDATETIME%TIME +KYEAR = TZDATETIME%nyear +KMONTH = TZDATETIME%nmonth +KDAY = TZDATETIME%nday +PTIME = TZDATETIME%xtime ! !------------------------------------------------------------------------------- END SUBROUTINE READ_SURFT0_MNH @@ -1877,7 +1877,7 @@ IF (KRESP /=0) THEN WRITE(ILUOUT,*) ' ' ENDIF ! -TZFIELD%CMNHNAME = TRIM(HREC)//'%TIME' +TZFIELD%CMNHNAME = TRIM(HREC)//'%xtime' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) TZFIELD%CUNITS = '' diff --git a/src/MNH/rel_forcingn.f90 b/src/MNH/rel_forcingn.f90 index f53bda4deefcb13f725698f7614d542202faa6ba..1f1d30d5d26aabc825ee0234c0e4f3c06b0bf0a8 100644 --- a/src/MNH/rel_forcingn.f90 +++ b/src/MNH/rel_forcingn.f90 @@ -162,10 +162,10 @@ IF (GSFIRSTCALL) THEN WRITE(UNIT=ILUOUT0,FMT='(" THERE ARE ",I2," REL FORCING FIELDs AT:")') NRELFRC DO JSX_REL = 1 , NRELFRC WRITE(UNIT=ILUOUT0,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') & - TDTRELFRC(JSX_REL)%TIME, & - TDTRELFRC(JSX_REL)%TDATE%DAY, & - TDTRELFRC(JSX_REL)%TDATE%MONTH, & - TDTRELFRC(JSX_REL)%TDATE%YEAR + TDTRELFRC(JSX_REL)%xtime, & + TDTRELFRC(JSX_REL)%nday, & + TDTRELFRC(JSX_REL)%nmonth, & + TDTRELFRC(JSX_REL)%nyear END DO !* 1.2 find first sounding to be used diff --git a/src/MNH/resolved_elecn.f90 b/src/MNH/resolved_elecn.f90 index 1d5ed7d83b2cdc42b71989d8fb197d9cf586fed9..de8136492d8a7c3328a56ff38c4b79f2dd2cf98a 100644 --- a/src/MNH/resolved_elecn.f90 +++ b/src/MNH/resolved_elecn.f90 @@ -948,11 +948,11 @@ IF (LFLASH_GEOM .AND. LLMA) THEN ! GLMA_FILE = .FALSE. ! - IF (TDTCUR%TIME >= TDTLMA%TIME-PTSTEP .AND. CLMA_FILE(1:5) /= "BEGIN") THEN + IF (TDTCUR%xtime >= TDTLMA%xtime-PTSTEP .AND. CLMA_FILE(1:5) /= "BEGIN") THEN LWRITE_LMA = .TRUE. END IF - IF (TDTCUR%TIME >= TDTLMA%TIME) THEN - TDTLMA%TIME = TDTLMA%TIME + XDTLMA + IF (TDTCUR%xtime >= TDTLMA%xtime) THEN + TDTLMA%xtime = TDTLMA%xtime + XDTLMA GLMA_FILE = .TRUE. LWRITE_LMA = .FALSE. END IF @@ -964,12 +964,12 @@ IF (LFLASH_GEOM .AND. LLMA) THEN TZFILE_LMA => NULL() ENDIF ! - TDTLMA%TIME = TDTLMA%TIME - XDTLMA - WRITE (YNAME,FMT='(3I2.2,A1,3I2.2,A1,I4.4)') & - ABS(TDTCUR%TDATE%YEAR-2000),TDTCUR%TDATE%MONTH,TDTCUR%TDATE%DAY,'_', & - INT(TDTLMA%TIME/3600.),INT(REAL(MOD(INT(TDTLMA%TIME),3600))/60.), & - MOD(INT(TDTLMA%TIME),60), '_', INT(XDTLMA) - TDTLMA%TIME = MOD(TDTLMA%TIME + XDTLMA,86400.) + TDTLMA%xtime = TDTLMA%xtime - XDTLMA + WRITE (YNAME,FMT='(3I2.2,A1,3I2.2,A1,I4.4)') & + ABS(TDTCUR%nyear-2000),TDTCUR%nmonth,TDTCUR%nday,'_', & + INT(TDTLMA%xtime/3600.),INT(REAL(MOD(INT(TDTLMA%xtime),3600))/60.), & + MOD(INT(TDTLMA%xtime),60), '_', INT(XDTLMA) + TDTLMA%xtime = MOD(TDTLMA%xtime + XDTLMA,86400.) CLMA_FILE = CEXP//"_SIMLMA_"//YNAME//".dat" ! IF ( IPROC .EQ. 0 ) THEN diff --git a/src/MNH/set_advfrc.f90 b/src/MNH/set_advfrc.f90 index 954d6fb9607ae72667f10f5bfc57e2adaaf2fa28..395660c8837f8278d7a8544a33a4f1208464dc9c 100644 --- a/src/MNH/set_advfrc.f90 +++ b/src/MNH/set_advfrc.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -208,10 +208,10 @@ print*,"! 3. READ ASCII FILES FOR ADVECTIVE FORCING " DO JKT = 1,NADVFRC ! ! Reading the date and the filename of mean state and frc - READ(ILUPRE,*) TDTADVFRC(JKT)%TDATE%YEAR, & - TDTADVFRC(JKT)%TDATE%MONTH, & - TDTADVFRC(JKT)%TDATE%DAY, & - TDTADVFRC(JKT)%TIME + READ(ILUPRE,*) TDTADVFRC(JKT)%nyear, & + TDTADVFRC(JKT)%nmonth, & + TDTADVFRC(JKT)%nday, & + TDTADVFRC(JKT)%xtime ! ; Read filenames READ(ILUPRE,*) CFNAM_MEANVAR_ADV READ(ILUPRE,*) CFNAM_ADV @@ -318,10 +318,10 @@ print*,"!* 3. PRINT FORCING FIELDS" WRITE(UNIT=ILUOUT,FMT='(" THERE ARE ",I2," ADV FORCING AT:")') NADVFRC DO JL = 1 , NADVFRC WRITE(UNIT=ILUOUT,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') & - TDTADVFRC(JL)%TIME, & - TDTADVFRC(JL)%TDATE%DAY, & - TDTADVFRC(JL)%TDATE%MONTH, & - TDTADVFRC(JL)%TDATE%YEAR + TDTADVFRC(JL)%xtime, & + TDTADVFRC(JL)%nday, & + TDTADVFRC(JL)%nmonth, & + TDTADVFRC(JL)%nyear END DO ! DO JKT = 2,NADVFRC-1 @@ -331,15 +331,15 @@ DO JKT = 2,NADVFRC-1 WRITE(ILUOUT,*) & " soundings have to be entered in increasing temporal order" WRITE(ILUOUT,*) "SOUNDING TIME ", JKT-1, " IS: " - WRITE(ILUOUT,*) TDTADVFRC(JKT-1)%TDATE%YEAR, & - TDTADVFRC(JKT-1)%TDATE%MONTH, & - TDTADVFRC(JKT-1)%TDATE%DAY, & - TDTADVFRC(JKT-1)%TIME + WRITE(ILUOUT,*) TDTADVFRC(JKT-1)%nyear, & + TDTADVFRC(JKT-1)%nmonth, & + TDTADVFRC(JKT-1)%nday, & + TDTADVFRC(JKT-1)%xtime WRITE(ILUOUT,*) "SOUNDING TIME ", JKT, " IS: " - WRITE(ILUOUT,*) TDTADVFRC(JKT)%TDATE%YEAR, & - TDTADVFRC(JKT)%TDATE%MONTH, & - TDTADVFRC(JKT)%TDATE%DAY, & - TDTADVFRC(JKT)%TIME + WRITE(ILUOUT,*) TDTADVFRC(JKT)%nyear, & + TDTADVFRC(JKT)%nmonth, & + TDTADVFRC(JKT)%nday, & + TDTADVFRC(JKT)%xtime !callabortstop CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_ADVFRC','') END IF diff --git a/src/MNH/set_frc.f90 b/src/MNH/set_frc.f90 index 8744c8d9d884afd7e4e7e38e61bd747b0b9d37a1..6c49fbbf288028ccd6c579aeddf88cc7988c05d8 100644 --- a/src/MNH/set_frc.f90 +++ b/src/MNH/set_frc.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -224,10 +224,10 @@ DO JKT = 1,NFRC WRITE(UNIT=ILUOUT,FMT='(A, I4)') "SET_FRC: start reading forcing field ", JKT ! IF( YZP=='ZFRC' ) THEN - READ(ILUPRE,*) TDTFRC(JKT)%TDATE%YEAR, & - TDTFRC(JKT)%TDATE%MONTH, & - TDTFRC(JKT)%TDATE%DAY, & - TDTFRC(JKT)%TIME + READ(ILUPRE,*) TDTFRC(JKT)%nyear, & + TDTFRC(JKT)%nmonth, & + TDTFRC(JKT)%nday, & + TDTFRC(JKT)%xtime READ(ILUPRE,*) ZZGROUNDF ! data at ground level READ(ILUPRE,*) ZPGROUNDF READ(ILUPRE,*) ZTHDGROUNDF @@ -267,10 +267,10 @@ DO JKT = 1,NFRC END IF ! IF( YZP=='PFRC' ) THEN - READ(ILUPRE,*) TDTFRC(JKT)%TDATE%YEAR, & - TDTFRC(JKT)%TDATE%MONTH, & - TDTFRC(JKT)%TDATE%DAY, & - TDTFRC(JKT)%TIME + READ(ILUPRE,*) TDTFRC(JKT)%nyear, & + TDTFRC(JKT)%nmonth, & + TDTFRC(JKT)%nday, & + TDTFRC(JKT)%xtime ! READ(ILUPRE,*) ZZGROUNDF ! data at ground level READ(ILUPRE,*) ZPGROUNDF @@ -453,15 +453,15 @@ DO JKT = 2,NFRC-1 WRITE(ILUOUT,*) & " soundings have to be entered in increasing temporal order" WRITE(ILUOUT,*) "SOUNDING TIME ", JKT-1, " IS: " - WRITE(ILUOUT,*) TDTFRC(JKT-1)%TDATE%YEAR, & - TDTFRC(JKT-1)%TDATE%MONTH, & - TDTFRC(JKT-1)%TDATE%DAY, & - TDTFRC(JKT-1)%TIME + WRITE(ILUOUT,*) TDTFRC(JKT-1)%nyear, & + TDTFRC(JKT-1)%nmonth, & + TDTFRC(JKT-1)%nday, & + TDTFRC(JKT-1)%xtime WRITE(ILUOUT,*) "SOUNDING TIME ", JKT, " IS: " - WRITE(ILUOUT,*) TDTFRC(JKT)%TDATE%YEAR, & - TDTFRC(JKT)%TDATE%MONTH, & - TDTFRC(JKT)%TDATE%DAY, & - TDTFRC(JKT)%TIME + WRITE(ILUOUT,*) TDTFRC(JKT)%nyear, & + TDTFRC(JKT)%nmonth, & + TDTFRC(JKT)%nday, & + TDTFRC(JKT)%xtime !callabortstop CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_FRC','') END IF @@ -524,10 +524,10 @@ END DO WRITE(UNIT=ILUOUT,FMT='(" THERE ARE ",I2," FORCING SOUNDINGS AT:")') NFRC DO JL = 1 , NFRC WRITE(UNIT=ILUOUT,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') & - TDTFRC(JL)%TIME, & - TDTFRC(JL)%TDATE%DAY, & - TDTFRC(JL)%TDATE%MONTH, & - TDTFRC(JL)%TDATE%YEAR + TDTFRC(JL)%xtime, & + TDTFRC(JL)%nday, & + TDTFRC(JL)%nmonth, & + TDTFRC(JL)%nyear END DO ! IF (NVERB >= 10) THEN diff --git a/src/MNH/set_relfrc.f90 b/src/MNH/set_relfrc.f90 index 6de7d389ec9698629325142cc2dbecdbd2532563..d53c5ae3696c64ed0033d848869479f61bab9f88 100644 --- a/src/MNH/set_relfrc.f90 +++ b/src/MNH/set_relfrc.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -217,10 +217,10 @@ DO JKT = 1,NRELFRC ! Reading the date and the filename of mean state and frc - READ(ILUPRE,*) TDTRELFRC(JKT)%TDATE%YEAR, & - TDTRELFRC(JKT)%TDATE%MONTH, & - TDTRELFRC(JKT)%TDATE%DAY, & - TDTRELFRC(JKT)%TIME + READ(ILUPRE,*) TDTRELFRC(JKT)%nyear, & + TDTRELFRC(JKT)%nmonth, & + TDTRELFRC(JKT)%nday, & + TDTRELFRC(JKT)%xtime ! ; Read filenames READ(ILUPRE,*) CFNAM_MEANVAR_REL READ(ILUPRE,*) CFNAM_REL @@ -341,10 +341,10 @@ END DO ! End of loop in time WRITE(UNIT=ILUOUT,FMT='(" THERE ARE ",I2," REL FORCING AT:")') NRELFRC DO JL = 1 , NRELFRC WRITE(UNIT=ILUOUT,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') & - TDTRELFRC(JL)%TIME, & - TDTRELFRC(JL)%TDATE%DAY, & - TDTRELFRC(JL)%TDATE%MONTH, & - TDTRELFRC(JL)%TDATE%YEAR + TDTRELFRC(JL)%xtime, & + TDTRELFRC(JL)%nday, & + TDTRELFRC(JL)%nmonth, & + TDTRELFRC(JL)%nyear END DO ! DO JKT = 2,NRELFRC-1 @@ -354,15 +354,15 @@ DO JKT = 2,NRELFRC-1 WRITE(ILUOUT,*) & " soundings have to be entered in increasing temporal order" WRITE(ILUOUT,*) "SOUNDING TIME ", JKT-1, " IS: " - WRITE(ILUOUT,*) TDTRELFRC(JKT-1)%TDATE%YEAR, & - TDTRELFRC(JKT-1)%TDATE%MONTH, & - TDTRELFRC(JKT-1)%TDATE%DAY, & - TDTRELFRC(JKT-1)%TIME + WRITE(ILUOUT,*) TDTRELFRC(JKT-1)%nyear, & + TDTRELFRC(JKT-1)%nmonth, & + TDTRELFRC(JKT-1)%nday, & + TDTRELFRC(JKT-1)%xtime WRITE(ILUOUT,*) "SOUNDING TIME ", JKT, " IS: " - WRITE(ILUOUT,*) TDTRELFRC(JKT)%TDATE%YEAR, & - TDTRELFRC(JKT)%TDATE%MONTH, & - TDTRELFRC(JKT)%TDATE%DAY, & - TDTRELFRC(JKT)%TIME + WRITE(ILUOUT,*) TDTRELFRC(JKT)%nyear, & + TDTRELFRC(JKT)%nmonth, & + TDTRELFRC(JKT)%nday, & + TDTRELFRC(JKT)%xtime !callabortstop CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RELFRC','') END IF diff --git a/src/MNH/spawn_surf.f90 b/src/MNH/spawn_surf.f90 index deee96b3bd6a5bf44d5f35efadbafaa9a45f2e19..11f53dd211f1d1146666e5abdcfd9b54de769aba 100644 --- a/src/MNH/spawn_surf.f90 +++ b/src/MNH/spawn_surf.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2004-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2004-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -133,9 +133,8 @@ IF (CSURF=='EXTE') THEN ALLOCATE(YSURF_CUR%DUO%CSELECT(0)) CALL WRITE_PGD_SURF_ATM_n(YSURF_CUR,'MESONH') !* rereading of physiographic fields and definition of prognostic fields - CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PRE',HINIFILE,'MESONH', & - TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, & - TDTCUR%TDATE%DAY, TDTCUR%TIME ) + CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PRE', HINIFILE, 'MESONH', & + TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime ) CALL PREP_SURF_ATM(YSURF_CUR,'MESONH',HINIFILE,'MESONH',HINIFILEPGD,'MESONH',YLCTL) !* writing of all surface fields CALL WRITE_SURF_ATM_n(YSURF_CUR,'MESONH','ALL',.FALSE.) diff --git a/src/MNH/stationn.f90 b/src/MNH/stationn.f90 index ad4ca3b71d3cacca6f47df59fde4603e29cdc2e7..9af464af447a087c0c898f20d2034684509572d3 100644 --- a/src/MNH/stationn.f90 +++ b/src/MNH/stationn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -202,7 +202,7 @@ IF (GSTORE) THEN tstation%tpdates(in)%date%year = tdtexp%date%year tstation%tpdates(in)%date%month = tdtexp%date%month tstation%tpdates(in)%date%day = tdtexp%date%day - tstation%tpdates(in)%time = tdtexp%time + ( in - 1 ) * tstation%step + tstation%tpdates(in)%xtime = tdtexp%xtime + ( in - 1 ) * tstation%step #else tstation%tpdates(in) = tdtcur #endif diff --git a/src/MNH/sunposn.f90 b/src/MNH/sunposn.f90 index 256ed7616f4bef0383f9077fe60097de71445140..6a3172abea49655f5e8b0a59cf24307020cd8494 100644 --- a/src/MNH/sunposn.f90 +++ b/src/MNH/sunposn.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 rad 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! #################### MODULE MODI_SUNPOS_n ! #################### @@ -134,7 +129,7 @@ END IF !* 2. COMPUTES THE TRUE SOLAR TIME ! ---------------------------- ! -ZTIME = TDTRAD_FULL%TIME + 0.5*XDTRAD +ZTIME = TDTRAD_FULL%xtime + 0.5*XDTRAD ZUT = MOD( 24.0+MOD(ZTIME/3600.,24.0),24.0 ) diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90 index 553d535359844cb673ef2acb1a6c775a254552ac..18e2b56ba92f3d559692702d2c3661feefa68c20 100644 --- a/src/MNH/write_budget.f90 +++ b/src/MNH/write_budget.f90 @@ -190,10 +190,10 @@ subroutine Write_budget( tpdiafile, tpdtcur, ptstep, ksv ) ! ZWORKTEMP(1)=ZWORKTEMP(1)+(1.-NBUSTEP*0.5)*PTSTEP ! - tzdates(1)%tdate%year = tdtexp%tdate%year - tzdates(1)%tdate%month = tdtexp%tdate%month - tzdates(1)%tdate%day = tdtexp%tdate%day - tzdates(1)%time = tdtexp%time + zworktemp(1) + tzdates(1)%nyear = tdtexp%nyear + tzdates(1)%nmonth = tdtexp%nmonth + tzdates(1)%nday = tdtexp%nday + tzdates(1)%xtime = tdtexp%xtime + zworktemp(1) DEALLOCATE ( ZWORKTEMP ) ! @@ -210,16 +210,16 @@ subroutine Write_budget( tpdiafile, tpdtcur, ptstep, ksv ) ! ZWORKTEMP(NBUWRNB)=ZWORKTEMP(NBUWRNB)+(1.-NBUSTEP*0.5)*PTSTEP ! - tzdates(NBUWRNB)%tdate%year = tdtexp%tdate%year - tzdates(NBUWRNB)%tdate%month = tdtexp%tdate%month - tzdates(NBUWRNB)%tdate%day = tdtexp%tdate%day - tzdates(NBUWRNB)%time = tdtexp%time + zworktemp(NBUWRNB) + tzdates(NBUWRNB)%nyear = tdtexp%nyear + tzdates(NBUWRNB)%nmonth = tdtexp%nmonth + tzdates(NBUWRNB)%nday = tdtexp%nday + tzdates(NBUWRNB)%xtime = tdtexp%xtime + zworktemp(NBUWRNB) DO JT=1,NBUWRNB-1 ZWORKTEMP(JT) = ZWORKTEMP(NBUWRNB)-NBUSTEP*PTSTEP*(NBUWRNB-JT) - tzdates(jt)%tdate%year = tdtexp%tdate%year - tzdates(jt)%tdate%month = tdtexp%tdate%month - tzdates(jt)%tdate%day = tdtexp%tdate%day - tzdates(jt)%time = tdtexp%time + zworktemp(jt) + tzdates(jt)%nyear = tdtexp%nyear + tzdates(jt)%nmonth = tdtexp%nmonth + tzdates(jt)%nday = tdtexp%nday + tzdates(jt)%xtime = tdtexp%xtime + zworktemp(jt) END DO DEALLOCATE( ZWORKTEMP ) diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90 index 7f0b0a0d34bd311b78b6d827b050c682aa44d74d..7b320fa3c7a2c18b92f3e36a7af1259c63522b28 100644 --- a/src/MNH/write_diachro.f90 +++ b/src/MNH/write_diachro.f90 @@ -592,22 +592,22 @@ TZFIELD%LTIMEDEP = .FALSE. !Reconstitute old diachro format allocate( zdatime( 16, size(tpdates) ) ) -zdatime(1, : ) = tdtexp%tdate%year -zdatime(2, : ) = tdtexp%tdate%month -zdatime(3, : ) = tdtexp%tdate%day -zdatime(4, : ) = tdtexp%time -zdatime(5, : ) = tdtseg%tdate%year -zdatime(6, : ) = tdtseg%tdate%month -zdatime(7, : ) = tdtseg%tdate%day -zdatime(8, : ) = tdtseg%time -zdatime(9, : ) = tdtmod%tdate%year -zdatime(10, : ) = tdtmod%tdate%month -zdatime(11, : ) = tdtmod%tdate%day -zdatime(12, : ) = tdtmod%time -zdatime(13, : ) = tpdates(:)%tdate%year -zdatime(14, : ) = tpdates(:)%tdate%month -zdatime(15, : ) = tpdates(:)%tdate%day -zdatime(16, : ) = tpdates(:)%time +zdatime(1, : ) = tdtexp%nyear +zdatime(2, : ) = tdtexp%nmonth +zdatime(3, : ) = tdtexp%nday +zdatime(4, : ) = tdtexp%xtime +zdatime(5, : ) = tdtseg%nyear +zdatime(6, : ) = tdtseg%nmonth +zdatime(7, : ) = tdtseg%nday +zdatime(8, : ) = tdtseg%xtime +zdatime(9, : ) = tdtmod%nyear +zdatime(10, : ) = tdtmod%nmonth +zdatime(11, : ) = tdtmod%nday +zdatime(12, : ) = tdtmod%xtime +zdatime(13, : ) = tpdates(:)%nyear +zdatime(14, : ) = tpdates(:)%nmonth +zdatime(15, : ) = tpdates(:)%nday +zdatime(16, : ) = tpdates(:)%xtime call IO_Field_write( tzfile, tzfield, zdatime ) diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90 index 7008f40e5ce147a157910c03790fa7ae0899e78c..1f5bbee65240bcc76f4e4cd27d07d0e501887eac 100644 --- a/src/MNH/write_lfifm1_for_diag_supp.f90 +++ b/src/MNH/write_lfifm1_for_diag_supp.f90 @@ -801,12 +801,12 @@ IF (LEN_TRIM(CRAD_SAT) /= 0 .AND. NRR /=0) THEN DO JI=1,ITOTGEO ZIRBT(:,:) = XUNDEF ZWVBT(:,:) = XUNDEF - CALL RADTR_SATEL(TDTCUR%TDATE%YEAR,TDTCUR%TDATE%MONTH,TDTCUR%TDATE%DAY, & - TDTCUR%TIME, NDLON, NFLEV, NSTATM, NRAD_COLNBR, XEMIS(:,:,1), & - XCCO2, XTSRAD, XSTATM, XTHT, XRT, XPABST, XZZ, & - XSIGS, XMFCONV, XCLDFR, LUSERI, LSIGMAS, & - LSUBG_COND, LRAD_SUBG_COND, ZIRBT, ZWVBT, & - INDGEO(JI),VSIGQSAT ) + CALL RADTR_SATEL( TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime, & + NDLON, NFLEV, NSTATM, NRAD_COLNBR, XEMIS(:,:,1), & + XCCO2, XTSRAD, XSTATM, XTHT, XRT, XPABST, XZZ, & + XSIGS, XMFCONV, XCLDFR, LUSERI, LSIGMAS, & + LSUBG_COND, LRAD_SUBG_COND, ZIRBT, ZWVBT, & + INDGEO(JI), VSIGQSAT ) ! TZFIELD%CMNHNAME = TRIM(YNAM_SAT(JI))//'_IRBT' TZFIELD%CSTDNAME = '' diff --git a/src/MNH/write_surf_mnh.f90 b/src/MNH/write_surf_mnh.f90 index ad6ba8fb06e2a03672bee885cbeafdacd92dbc1a..58e08d8dc9a0d7189d1b0a6b53f3b0b5ae157b48 100644 --- a/src/MNH/write_surf_mnh.f90 +++ b/src/MNH/write_surf_mnh.f90 @@ -1430,8 +1430,10 @@ IF( HREC=='DTCUR' .AND. CSTORAGE_TYPE/='SU' ) THEN CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFT0_MNH',TRIM(HREC)//' not written in file by externalized surface') RETURN ELSE - TZDATA%TDATE = DATE(KYEAR,KMONTH,KDAY) - TZDATA%TIME = PTIME + TZDATA%nyear = kyear + TZDATA%nmonth = kmonth + TZDATA%nday = kday + TZDATA%xtime = PTIME ! CALL PREPARE_METADATA_WRITE_SURF(HREC,'--',HCOMMENT,0,TYPEDATE,0,'WRITE_SURFT0_MNH',TZFIELD) CALL IO_Field_write(TFILE_SURFEX,TZFIELD,TZDATA,KRESP) @@ -1543,7 +1545,7 @@ ELSE CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFT1_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG) END IF ! - TZFIELD%CMNHNAME = TRIM(HREC)//'%TIME' + TZFIELD%CMNHNAME = TRIM(HREC)//'%xtime' TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) TZFIELD%CUNITS = '' diff --git a/src/MNH/write_ts1d.f90 b/src/MNH/write_ts1d.f90 index ab625577a45976fbea4f7be04915cdc4b4fc05e4..440d7303ff4f9f56889afa15d364373aa129129c 100644 --- a/src/MNH/write_ts1d.f90 +++ b/src/MNH/write_ts1d.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -43,7 +43,7 @@ !! Original 12/10/95 !! Add U, V, W, all water variables and all tracers to timeseries (KS) !! 27/10/95 KS: add air density -!! 09/02/96 KS: change time to TDTSEG%TIME + ISCOUNT * XTSTEP +!! 09/02/96 KS: change time to TDTSEG%xtime + ISCOUNT * XTSTEP !! & grid identifier all set to 1 (mass levels) !! 01/03/96 KS: remove air density !! write variables every 900s to disk, regardless of XTSTEP @@ -161,14 +161,14 @@ TZFILE => NULL() NBPROF = 0 CALL DATETIME_DISTANCE(TDTEXP,TDTCUR,ZTIME) -ZTIME = ZTIME + TDTEXP%TIME +ZTIME = ZTIME + TDTEXP%xtime CALL GET_DIM_EXT_ll ('B',IIU,IJU) IF ((CPROGRAM =='DIAG ').AND.(LCHEMDIAG)) THEN - WRITE(YCYEAR,'(I4.4)') TDTCUR%TDATE%YEAR - WRITE(YCMONTH,'(I2.2)') TDTCUR%TDATE%MONTH - WRITE(YCDAY,'(I2.2)') TDTCUR%TDATE%DAY - IUTIME = INT(3600*MOD( 24.0+MOD((TDTCUR%TIME)/3600.,24.0),24.0 )) ! TU + WRITE(YCYEAR,'(I4.4)') TDTCUR%nyear + WRITE(YCMONTH,'(I2.2)') TDTCUR%nmonth + WRITE(YCDAY,'(I2.2)') TDTCUR%nday + IUTIME = INT(3600*MOD( 24.0+MOD((TDTCUR%xtime)/3600.,24.0),24.0 )) ! TU WRITE(YCTIME,'(I5.5)') IUTIME