diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90 index 674b21574e9c2c06920f4e4271afb73bcc10b7ce..dabc5ab3efab5b39df4b867fd199af12420fc955 100644 --- a/src/MNH/diag.f90 +++ b/src/MNH/diag.f90 @@ -63,7 +63,6 @@ !! 03/2010 (G.Tanguy) Clean up of unuseful variables !! 05/2010 Add lidar !!! 03/2012 (S. Bielli) Add NAM_NCOUT for netcdf output (removed 11/07/2016) -!! 03/2013 (O.Caumont) Modif call aircraft_balloon !! 03/2013 (C. Augros) Add variables for radar simulator in NAMELIST: !! NBAZIM,LSNRT,XSNRMIN !! D.Ricard 2015 : add LMOIST_ES @@ -83,24 +82,22 @@ !! 01/2018 (J.-P. Chaboureau) Add altitude interpolation !! 01/2018 (J.-P. Chaboureau) Add coarse graining !! 01/2018 (G.Delautier) SURFEX 8.1 -!! 03/2018 (P.Wautelet) replace SUBTRACT_TO_DATE and ADD_FORECAST_TO_DATE -!! by DATETIME_CORRECTDATE !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! V.Vionnet 07/2017 add LWIND_CONTRAV !! 11/2017 (D. Ricard, P. Marquet) add diagnostics for THETAS ! P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list ! P. Wautelet 11/02/2019: added missing use of MODI_CH_MONITOR_n ! P. Wautelet 28/03/2019: use MNHTIME for time measurement variables -! P. Wautelet 26/07/2019: bug correction: deallocate of zsea done too early ! P. Wautelet 13/09/2019: budget: simplify and modernize date/time management ! P. Wautelet 06/07/2021: use FINALIZE_MNH +! P. Wautelet 15/09/2023! remove offline balloons !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! USE MODD_ADV_n -USE MODD_AIRCRAFT_BALLOON +USE MODD_AIRCRAFT_BALLOON, ONLY: LFLYER USE MODD_BUDGET USE MODD_CONF USE MODD_CONF_n @@ -113,7 +110,7 @@ USE MODD_FIELD_n USE MODD_GR_FIELD_n USE MODD_GRID, ONLY: XLONORI, XLATORI USE MODD_GRID_n -USE MODD_IO, ONLY: CIO_DIR, NIO_VERB, NVERB_DEBUG, TFILEDATA, TFILE_SURFEX +USE MODD_IO, ONLY: NIO_VERB, NVERB_DEBUG, TFILEDATA, TFILE_SURFEX USE MODD_LBC_n USE MODD_LES USE MODD_LES_BUDGET @@ -141,11 +138,9 @@ USE MODD_TIME_n USE MODD_TURB_n USE MODD_VAR_ll ! -USE MODE_AIRCRAFT_BALLOON USE MODE_DATETIME USE MODE_FINALIZE_MNH, only: FINALIZE_MNH USE MODE_IO_FILE, only: IO_File_close, IO_File_open -USE MODE_IO_FIELD_WRITE, only: IO_Header_write USE MODE_IO, only: IO_Config_set, IO_Init USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list USE MODE_ll @@ -157,14 +152,11 @@ USE MODE_MODELN_HANDLER USE MODE_MSG USE MODE_POS USE MODE_TIME -USE MODE_WRITE_AIRCRAFT_BALLOON -use mode_write_lfifmn_fordiachro_n, only: WRITE_LFIFMN_FORDIACHRO_n ! USE MODI_CH_MONITOR_n USE MODI_COMPUTE_R00 USE MODI_DIAG_SURF_ATM_N USE MODI_INIT_MNH -USE MODI_MNHGET_SURF_PARAM_n USE MODI_PHYS_PARAM_n USE MODI_VERSION USE MODI_WRITE_DIAG_SURF_ATM_N @@ -181,8 +173,6 @@ IMPLICIT NONE ! !* 0.1 declarations of local variables ! -TYPE(DATE_TIME) :: TXDTBAL ! current time and date for BALLOON and AIRCRAFT trajectories -TYPE(DATE_TIME) :: TPDTCUR_SAVE CHARACTER (LEN=28), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file CHARACTER (LEN=28), DIMENSION(1) :: YINIFILEPGD ! names of the INPUT FM-file CHARACTER (LEN=5) :: YSUFFIX ! character string for the OUTPUT FM-file number @@ -193,9 +183,8 @@ CHARACTER (LEN=4) :: YTURB ! initial flag to call to turbulence schemes INTEGER :: ILUOUT0 ! Logical unit number for the output listing REAL(kind=MNHTIME), DIMENSION(2) :: ZTIME0, ZTIME1, ZTIME2, ZRAD, ZDCONV, ZSHADOWS, ZGROUND, & ZTRACER, ZDRAG, ZTURB, ZMAFL, ZCHEM, ZTIME_BU, ZEOL ! CPU times -REAL(kind=MNHTIME), DIMENSION(2) :: ZSTART, ZINIT, ZWRIT, ZBALL, ZPHYS, ZSURF, ZWRITS, ZTRAJ ! storing variables +REAL(kind=MNHTIME), DIMENSION(2) :: ZSTART, ZINIT, ZWRIT, ZPHYS, ZSURF, ZWRITS, ZTRAJ ! storing variables INTEGER(KIND=LFIINT) :: INPRAR ! number of articles predicted in the LFIFM file -INTEGER :: ISTEPBAL ! loop indice for balloons and aircraft INTEGER :: ILUNAM ! Logical unit numbers for the namelist file ! and for output_listing file INTEGER :: JF =0 ! loop index @@ -205,10 +194,8 @@ LOGICAL:: GCLOUD_ONLY ! conditionnal radiation computations for ! the only cloudy columns ! INTEGER :: IIU, IJU, IKU -REAL, DIMENSION(:,:),ALLOCATABLE :: ZSEA REAL, DIMENSION(:,:,:,:),ALLOCATABLE :: ZWETDEPAER ! -TYPE(TFILEDATA),POINTER :: TZDIACFILE => NULL() TYPE(TFILEDATA),POINTER :: TZNMLFILE => NULL() !Namelist file ! NAMELIST/NAM_DIAG/ CISO, LVAR_RS, LVAR_LS, & @@ -222,9 +209,7 @@ NAMELIST/NAM_DIAG/ CISO, LVAR_RS, LVAR_LS, & LCLD_COV, LVAR_PR, LTOTAL_PR, LMEAN_PR, XMEAN_PR, & NCAPE, LBV_FR, LRADAR, CBLTOP, LTRAJ, & LDIAG,XDIAG,LCHEMDIAG,LCHAQDIAG,XCHEMLAT,XCHEMLON,& - CSPEC_BU_DIAG,CSPEC_DIAG,LAIRCRAFT_BALLOON,NTIME_AIRCRAFT_BALLOON,& - XSTEP_AIRCRAFT_BALLOON,& - XLAT_BALLOON,XLON_BALLOON,XALT_BALLOON,& + CSPEC_BU_DIAG,CSPEC_DIAG, & LC2R2, LC3R5, LELECDIAG, CAERDIAG, & NGPS,XLAT_GPS,XLON_GPS,XZS_GPS,CNAM_GPS,XDIFFORO, & NVERSION_RAD, NCURV_INTERPOL, LCART_RAD, CARF,LREFR,LDNDZ,& @@ -313,13 +298,6 @@ CSPEC_DIAG='' LTRAJ=.FALSE. LLIMA_DIAG=.FALSE. ! -LAIRCRAFT_BALLOON=.FALSE. -NTIME_AIRCRAFT_BALLOON=NUNDEF -XSTEP_AIRCRAFT_BALLOON=XUNDEF -XLAT_BALLOON(:)=XUNDEF -XLON_BALLOON(:)=XUNDEF -XALT_BALLOON(:)=XUNDEF -! NGPS=-1 CNAM_GPS(:)='' XLAT_GPS(:)=XUNDEF @@ -515,60 +493,6 @@ ZWRIT =ZTIME2-ZTIME1 ZTIME1=ZTIME2 !------------------------------------------------------------------------------- ! -!* 4.1 BALLOON and AIRCRAFT -! -IF ( LAIRCRAFT_BALLOON ) THEN -! - CALL IO_File_add2list(TZDIACFILE,TRIM(CINIFILE)//'BAL','MNHDIACHRONIC','WRITE', & - HDIRNAME=CIO_DIR,KLFINPRAR=INPRAR,KLFITYPE=1,KLFIVERB=NVERB) -! - CALL IO_File_open(TZDIACFILE) -! - WRITE(ILUOUT0,*) ' ' - WRITE(ILUOUT0,*) 'DIAG AFTER OPEN DIACHRONIC FILE' - WRITE(ILUOUT0,*) ' ' -! - TPDTCUR_SAVE = TDTCUR -! - 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 -! - ALLOCATE (ZSEA(SIZE(XRHODJ,1),SIZE(XRHODJ,2))) - ZSEA(:,:) = 0. - CALL MNHGET_SURF_PARAM_n (PSEA=ZSEA(:,:)) - DO ISTEPBAL = 1, NTIME_AIRCRAFT_BALLOON, INT(XSTEP_AIRCRAFT_BALLOON) - CALL AIRCRAFT_BALLOON( XSTEP_AIRCRAFT_BALLOON, XZZ, XMAP, XLONORI, XLATORI, XUT, XVT, XWT, & - XPABST, XTHT, XRT, XSVT, XTKET, XTSRAD, XRHODREF, XCIT, ZSEA ) - - TXDTBAL%xtime = TXDTBAL%xtime + XSTEP_AIRCRAFT_BALLOON - CALL DATETIME_CORRECTDATE(TXDTBAL) - TDTCUR = TXDTBAL !TDTCUR is used in AIRCRAFT_BALLOON - END DO - DEALLOCATE (ZSEA) -! - TDTCUR = TPDTCUR_SAVE -! - CALL IO_Header_write(TZDIACFILE) - CALL WRITE_LFIFMN_FORDIACHRO_n(TZDIACFILE) - CALL WRITE_AIRCRAFT_BALLOON(TZDIACFILE) -#ifdef MNH_IOLFI - CALL MENU_DIACHRO(TZDIACFILE,'END') -#endif - CALL IO_File_close(TZDIACFILE) - WRITE(ILUOUT0,*) ' ' - WRITE(ILUOUT0,*) 'DIAG AFTER CLOSE DIACHRONIC FILE' - WRITE(ILUOUT0,*) ' ' -END IF -! -CALL SECOND_MNH2(ZTIME2) -ZBALL =ZTIME2-ZTIME1 -ZTIME1=ZTIME2 -!------------------------------------------------------------------------------- -! !* 5.0 Call to physics ! !* initialise the source terms @@ -771,7 +695,6 @@ ZTIME2=ZTIME2-ZTIME0 !WRITE(ILUOUT0,YFMT) '| START | ',ZSTART,' | ',100.*ZSTART/ZTIME2,' |' !WRITE(ILUOUT0,YFMT) '| INIT | ',ZINIT,' | ',100.*ZINIT/ZTIME2,' |' !WRITE(ILUOUT0,YFMT) '| WRIT | ',ZWRIT,' | ',100.*ZWRIT/ZTIME2,' |' -!WRITE(ILUOUT0,YFMT) '| BALL | ',ZBALL,' | ',100.*ZBALL/ZTIME2,' |' !WRITE(ILUOUT0,YFMT) '| PHYS | ',ZPHYS,' | ',100.*ZPHYS/ZTIME2,' |' !IF (ZRAD>0.) & ! WRITE(ILUOUT0,YFMT2) '| ',CRAD,' | ',ZRAD diff --git a/src/MNH/ini_aircraft_balloon.f90 b/src/MNH/ini_aircraft_balloon.f90 index fb6aba612e8967dd2daf11d5ecdff81004720d73..7dc6567036e01f7619912a665cd1b99b452486e7 100644 --- a/src/MNH/ini_aircraft_balloon.f90 +++ b/src/MNH/ini_aircraft_balloon.f90 @@ -7,6 +7,7 @@ ! P. Wautelet 01/10/2020: bugfix: DEFAULT_FLYER: add missing default values ! P. Wautelet 06/2022: reorganize flyers ! P. Wautelet 25/08/2022: write balloon positions in netCDF4 files inside HDF5 groups +! P. Wautelet 15/09/2023: remove offline balloons !----------------------------------------------------------------- !############################### @@ -67,8 +68,6 @@ CONTAINS ! USE MODD_AIRCRAFT_BALLOON USE MODD_CONF, ONLY: CPROGRAM -USE MODD_DIAG_FLAG, ONLY: LAIRCRAFT_BALLOON, NTIME_AIRCRAFT_BALLOON, & - XALT_BALLOON, XLAT_BALLOON, XLON_BALLOON, XSTEP_AIRCRAFT_BALLOON USE MODD_DYN_n, ONLY: DYN_MODEL USE MODD_IO, ONLY: ISP, TFILEDATA USE MODD_PARAMETERS, ONLY: NUNDEF @@ -95,31 +94,17 @@ INTEGER :: IMI ! current model index INTEGER :: JI ! !---------------------------------------------------------------------------- -! -IMI=GET_CURRENT_MODEL_INDEX() -!---------------------------------------------------------------------------- -! -!* 1. Default values -! -------------- -! -IF ( CPROGRAM == 'DIAG ') THEN - IF ( .NOT. LAIRCRAFT_BALLOON ) RETURN - IF (NTIME_AIRCRAFT_BALLOON == NUNDEF .OR. XSTEP_AIRCRAFT_BALLOON == XUNDEF) THEN - CMNHMSG(1) = "NTIME_AIRCRAFT_BALLOON and/or XSTEP_AIRCRAFT_BALLOON not initialized in DIAG " - CMNHMSG(2) = "No calculations for Balloons and Aircraft" - CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_AIRCRAFT_BALLOON' ) - - LAIRCRAFT_BALLOON=.FALSE. - RETURN - ENDIF -ENDIF + +IF ( CPROGRAM == 'DIAG ') RETURN IF ( NAIRCRAFTS > 0 .OR. NBALLOONS > 0 ) LFLYER = .TRUE. -! + !---------------------------------------------------------------------------- ! !* 2. Balloon initialization ! ---------------------- +IMI=GET_CURRENT_MODEL_INDEX() + IF ( IMI == 1 ) THEN ALLOCATE( NRANKCUR_BALLOON (NBALLOONS) ); NRANKCUR_BALLOON = NFLYER_DEFAULT_RANK ALLOCATE( NRANKNXT_BALLOON (NBALLOONS) ); NRANKNXT_BALLOON = NFLYER_DEFAULT_RANK @@ -413,24 +398,6 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL ' ) CALL FLYER_TIMESTEP_CORRECT( DYN_MODEL(IMODEL)%XTSTEP, TPFLYER ) END IF - ! -ELSE IF ( CPROGRAM == 'DIAG ' ) THEN - IF ( LAIRCRAFT_BALLOON ) THEN - ! read the current location in MODD_DIAG_FLAG - ! - ZLAT=XLAT_BALLOON(KNBR) - ZLON=XLON_BALLOON(KNBR) - TPFLYER%XZ_CUR=XALT_BALLOON(KNBR) - IF (TPFLYER%XZ_CUR /= XUNDEF .AND. ZLAT /= XUNDEF .AND. ZLON /= XUNDEF ) THEN - CALL SM_XYHAT( PLATOR, PLONOR, ZLAT, ZLON, TPFLYER%XX_CUR, TPFLYER%XY_CUR ) - TPFLYER%LFLY = .TRUE. - CMNHMSG(1) = 'current location read from MODD_DIAG_FLAG for ' // TRIM( TPFLYER%CNAME ) - WRITE( CMNHMSG(2), * ) " Lat=", ZLAT, " Lon=", ZLON," Alt=",TPFLYER%XZ_CUR - CALL PRINT_MSG( NVERB_INFO, 'GEN', 'INI_LAUNCH' ) - END IF - ! - CALL FLYER_TIMESTEP_CORRECT( XSTEP_AIRCRAFT_BALLOON, TPFLYER ) - END IF END IF ! Restore correct value of GSMONOPROC diff --git a/src/MNH/modd_aircraft_balloon.f90 b/src/MNH/modd_aircraft_balloon.f90 index 4f71f50fcc3b61fd1118e120068a9e519641605a..a5bf6a96a1edb53bf932b8160d49327571e885c5 100644 --- a/src/MNH/modd_aircraft_balloon.f90 +++ b/src/MNH/modd_aircraft_balloon.f90 @@ -214,9 +214,7 @@ CONTAINS SUBROUTINE DATA_ARRAYS_ALLOCATE_FLYER( TPSENSOR, KSTORE ) ! ####################################################### - USE MODD_CONF, ONLY: CPROGRAM USE MODD_CONF_n, ONLY: NRR - USE MODD_DIAG_FLAG, ONLY: NTIME_AIRCRAFT_BALLOON USE MODD_DIM_n, ONLY: NKMAX USE MODD_DYN, ONLY: XSEGLEN USE MODD_DYN_n, ONLY: DYN_MODEL @@ -243,11 +241,7 @@ SUBROUTINE DATA_ARRAYS_ALLOCATE_FLYER( TPSENSOR, KSTORE ) IF ( PRESENT( KSTORE ) ) THEN ISTORE = KSTORE ELSE - IF ( CPROGRAM == 'DIAG ' ) THEN - ISTORE = INT ( NTIME_AIRCRAFT_BALLOON / TPSENSOR%TFLYER_TIME%XTSTEP ) + 1 - ELSE - ISTORE = NINT ( ( XSEGLEN - DYN_MODEL(1)%XTSTEP ) / TPSENSOR%TFLYER_TIME%XTSTEP ) + 1 - ENDIF + ISTORE = NINT ( ( XSEGLEN - DYN_MODEL(1)%XTSTEP ) / TPSENSOR%TFLYER_TIME%XTSTEP ) + 1 END IF CALL TPSENSOR%Data_arrays_allocate_sensor( .TRUE., KLEVELS = 1, KSTORE = ISTORE ) diff --git a/src/MNH/modd_diag_flag.f90 b/src/MNH/modd_diag_flag.f90 index a7eaf4b92f2d868c23c4df9d87abd2fac95b50ee..3115f14260767f60d010c5ecf7d427d6fd95c643 100644 --- a/src/MNH/modd_diag_flag.f90 +++ b/src/MNH/modd_diag_flag.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2023 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: /home/cvsroot/MNH-VX-Y-Z/src/MNH/modd_diag_flag.f90,v $ $Revision: 1.2.4.1.2.2.10.2.2.2.2.2 $ -! masdev4_8 modd 2008/06/30 15:13:13 -!----------------------------------------------------------------- ! ##################### MODULE MODD_DIAG_FLAG ! ###################### @@ -43,7 +38,8 @@ !! T. Dauhut 10/2017 add parallel 3D clustering !! J.-P. Chaboureau 01/2018 add altitude interpolation !! J.-P. Chaboureau 01/2018 add coarse graining -!! +! P. Wautelet 15/09/2023: remove offline balloons +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -109,13 +105,6 @@ LOGICAL :: LCHAQDIAG ! flag for aqueous phase chemistry REAL, DIMENSION(10) :: XCHEMLAT,XCHEMLON ! positions of vertical profiles written by routine write_ts1d CHARACTER (LEN=1024) :: CSPEC_BU_DIAG CHARACTER (LEN=1024) :: CSPEC_DIAG -LOGICAL :: LAIRCRAFT_BALLOON ! aircraft and balloon trajectories -INTEGER :: NTIME_AIRCRAFT_BALLOON ! time in seconds of trajectories computing -REAL :: XSTEP_AIRCRAFT_BALLOON ! minimum time step for trajectories calculations (s) -REAL, DIMENSION(9) :: XLAT_BALLOON ! initial latitudes of the balloons - !(at file time minus NTIME_AIRCRAFT_BALLOON/2) -REAL, DIMENSION(9) :: XLON_BALLOON ! initial longitudes of the balloons -REAL, DIMENSION(9) :: XALT_BALLOON ! initial altitude of the balloons (m) LOGICAL :: LC2R2 LOGICAL :: LC3R5 LOGICAL :: LELECDIAG ! flag for atmospheric electricity