diff --git a/src/MNH/aircraft_balloon.f90 b/src/MNH/aircraft_balloon.f90 index 4311c540685418f775ed75094c50aafe534908a6..5027747f5b37e84b67044d420c7c0a08ef174b94 100644 --- a/src/MNH/aircraft_balloon.f90 +++ b/src/MNH/aircraft_balloon.f90 @@ -240,7 +240,12 @@ IF ( ISP == NFLYER_DEFAULT_RANK ) THEN IF ( .NOT. TZBALLOON%LPOSITION_INIT ) THEN TZBALLOON%LPOSITION_INIT = .TRUE. ! Get rank of the process where the balloon is and the model number - CALL FLYER_GET_RANK_MODEL_ISCRASHED( TZBALLOON, PX = TZBALLOON%XXLAUNCH, PY = TZBALLOON%XYLAUNCH ) + IF ( TZBALLOON%LFLY ) THEN + ! In this case, we are in a restart and the balloon position was read in the restart file + CALL FLYER_GET_RANK_MODEL_ISCRASHED( TZBALLOON ) + ELSE + CALL FLYER_GET_RANK_MODEL_ISCRASHED( TZBALLOON, PX = TZBALLOON%XXLAUNCH, PY = TZBALLOON%XYLAUNCH ) + END IF IF ( TZBALLOON%LCRASH ) THEN CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'AIRCRAFT_BALLOON', 'balloon ' // TRIM( TZBALLOON%CTITLE ) & // ': launch coordinates are outside of horizontal physical domain' ) diff --git a/src/MNH/ini_aircraft_balloon.f90 b/src/MNH/ini_aircraft_balloon.f90 index 5fa73b17a2206f866c1c7bf923baa130ee86291d..61e6349733aadbc2fa057d9de6cd011fa4a32dcf 100644 --- a/src/MNH/ini_aircraft_balloon.f90 +++ b/src/MNH/ini_aircraft_balloon.f90 @@ -188,9 +188,9 @@ USE NETCDF, ONLY: NF90_INQ_NCID, NF90_NOERR use modd_field, only: tfieldmetadata, TYPEREAL USE MODD_IO, ONLY: GSMONOPROC, ISP, TFILEDATA #ifdef MNH_IOCDF4 -USE MODD_MPIF -USE MODD_PRECISION, ONLY: CDFINT, CDFINT_MPI +USE MODD_PRECISION, ONLY: CDFINT #endif +USE MODD_TIME_n, ONLY: TDTCUR use MODE_IO_FIELD_READ, only: IO_Field_read @@ -198,10 +198,8 @@ INTEGER, INTENT(IN) :: KNBR CLASS(TBALLOONDATA), INTENT(INOUT) :: TPFLYER #ifdef MNH_IOCDF4 -INTEGER :: IERR INTEGER(KIND=CDFINT) :: IGROUPID INTEGER(KIND=CDFINT) :: ISTATUS -INTEGER(KIND=CDFINT), DIMENSION(2) :: IDATA ! Intermediate array to allow merge of 2 MPI broadcasts #endif INTEGER :: IMODEL INTEGER :: IRESP ! return code @@ -306,12 +304,9 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL ' ) #ifdef MNH_IOCDF4 ELSE ! Read in netCDF file (new structure since MesoNH 5.6) - IF ( ISP == TPINIFILE%NMASTER_RANK ) ISTATUS = NF90_INQ_NCID( TPINIFILE%NNCID, TRIM( TPFLYER%CTITLE ), IGROUPID ) + IF ( ISP /= TPINIFILE%NMASTER_RANK ) CALL PRINT_MSG( NVERB_ERROR, 'IO', 'INI_LAUNCH', 'process is not the file master process') - IDATA(:) = [ ISTATUS, IGROUPID ] ! Merge 2 broadcasts into 1 - CALL MPI_BCAST( IDATA, SIZE( IDATA ), CDFINT_MPI, TPINIFILE%NMASTER_RANK - 1, TPINIFILE%NMPICOMM, IERR ) - ISTATUS = IDATA(1) - IGROUPID = IDATA(2) + ISTATUS = NF90_INQ_NCID( TPINIFILE%NNCID, TRIM( TPFLYER%CTITLE ), IGROUPID ) IF ( ISTATUS == NF90_NOERR ) THEN GREAD = .TRUE. @@ -393,6 +388,7 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL ' ) CALL SM_XYHAT( PLATOR, PLONOR, ZLAT, ZLON, TPFLYER%XX_CUR, TPFLYER%XY_CUR ) TPFLYER%LFLY = .TRUE. + TPFLYER%TPOS_CUR = TDTCUR CMNHMSG(1) = 'current location read from synchronous file for ' // TRIM( TPFLYER%CTITLE ) IF (TPFLYER%CTYPE== 'CVBALL') THEN