From 8c2d6f61f1eb89dfbfa18774fd4190d37f981af8 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Fri, 18 Dec 2020 09:23:54 +0100 Subject: [PATCH] Philippe 18/12/2020: restructure type date_time --- LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 | 10 +-- src/LIB/SURCOUCHE/src/mode_io_field_read.f90 | 14 ++-- src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90 | 8 +- src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 | 10 +-- src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90 | 16 ++-- src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 | 36 ++++----- src/MNH/adv_forcingn.f90 | 8 +- src/MNH/advec_ppm_algo.f90 | 11 +-- src/MNH/aerozon.f90 | 22 +++--- src/MNH/aircraft_balloon_evol.f90 | 36 ++++----- src/MNH/ch_monitorn.f90 | 34 ++++----- src/MNH/compute_r00.f90 | 6 +- src/MNH/diag.f90 | 12 +-- src/MNH/flash_geom_elec.f90 | 2 +- src/MNH/forcing.f90 | 8 +- src/MNH/ground_paramn.f90 | 30 ++++---- src/MNH/ini_aircraft.f90 | 80 ++++++++++---------- src/MNH/ini_balloon.f90 | 65 ++++++++-------- src/MNH/ini_modeln.f90 | 6 +- src/MNH/ini_radiations.f90 | 14 ++-- src/MNH/ini_radiations_ecmwf.f90 | 14 ++-- src/MNH/init_ground_paramn.f90 | 16 ++-- src/MNH/mnh2lpdm_ech.f90 | 10 +-- src/MNH/mnh2lpdm_ini.f90 | 36 ++++----- src/MNH/modd_type_date.f90 | 34 ++++----- src/MNH/mode_datetime.f90 | 54 ++++++------- src/MNH/mode_les_diachro.f90 | 16 ++-- src/MNH/mode_time.f90 | 18 ++--- src/MNH/modeln.f90 | 2 +- src/MNH/paspol.f90 | 12 +-- src/MNH/phys_paramn.f90 | 2 +- src/MNH/prep_ideal_case.f90 | 8 +- src/MNH/prep_surf_mnh.f90 | 7 +- src/MNH/prep_surfex.f90 | 8 +- src/MNH/profilern.f90 | 4 +- src/MNH/read_all_data_grib_case.f90 | 32 ++++---- src/MNH/read_surf_mnh.f90 | 10 +-- src/MNH/rel_forcingn.f90 | 8 +- src/MNH/resolved_elecn.f90 | 18 ++--- src/MNH/set_advfrc.f90 | 34 ++++----- src/MNH/set_frc.f90 | 42 +++++----- src/MNH/set_relfrc.f90 | 34 ++++----- src/MNH/spawn_surf.f90 | 7 +- src/MNH/stationn.f90 | 4 +- src/MNH/sunposn.f90 | 11 +-- src/MNH/write_budget.f90 | 24 +++--- src/MNH/write_diachro.f90 | 32 ++++---- src/MNH/write_lfifm1_for_diag_supp.f90 | 12 +-- src/MNH/write_surf_mnh.f90 | 8 +- src/MNH/write_ts1d.f90 | 14 ++-- 50 files changed, 470 insertions(+), 489 deletions(-) diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 index 4337a8d8f..5bca2401c 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 c7a390305..15bb499d2 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 6d2990d35..1e704e935 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 c81a2edb7..1984e4cce 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 7f5f2ce22..1508b1cf3 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 2b1d3f203..c693aa11f 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 4c41fa783..963f453dc 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 b7eb4415f..b538a305d 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 190ff0298..b2e6b6c9f 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 f4a3dd5d2..f16bad660 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 6d6aa9a79..d1ac4a1a6 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 5b7c68650..692fb3a1e 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 af19ea567..b5b129240 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 3cd873895..8ae281d26 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 ef75e5383..062cd4afa 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 5f8214224..b504d4b1b 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 afd5a75e1..2df936301 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 47a98ccc5..71e935021 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 74971c319..1e59f88b7 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 d05fc31f5..883179c8b 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 b71883584..e8f11de28 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 ab38093a9..95b13ded3 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 7602cbaed..f116da388 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 0d317661d..6cf4bfab0 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 76fb6b097..e9717d321 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 b6547cfa9..a1911cc21 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 87405ef83..9031c723c 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 0f71113f9..86b9dbadb 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 494ae993e..d50b8881a 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 98c8c94d7..50988a348 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 5354a0b37..9b9213708 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 92a0d12ff..2aae99351 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 0e6c02cfb..ce8b407d2 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 33b73f410..8493ac43d 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 a311590ff..05f09d328 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 b38be9d78..489250ef7 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 8e2f8faba..f051ed739 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 f53bda4de..1f1d30d5d 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 1d5ed7d83..de8136492 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 954d6fb96..395660c88 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 8744c8d9d..6c49fbbf2 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 6de7d389e..d53c5ae36 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 deee96b3b..11f53dd21 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 ad4ca3b71..9af464af4 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 256ed7616..6a3172abe 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 553d53535..18e2b56ba 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 7f0b0a0d3..7b320fa3c 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 7008f40e5..1f5bbee65 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 ad6ba8fb0..58e08d8dc 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 ab625577a..440d7303f 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 -- GitLab