diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 index 8344bffc68bbda7d3dc06ba4129ee3aa1562fdd3..26d8ab7056e0683d6206e421cebec37deaeecc17 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 @@ -1855,46 +1855,13 @@ if ( tpfile%lmaster ) then end if if ( lflyer ) then - call Write_flyer_time_coord( tballoon1 ) - call Write_flyer_time_coord( tballoon2 ) - call Write_flyer_time_coord( tballoon3 ) - call Write_flyer_time_coord( tballoon4 ) - call Write_flyer_time_coord( tballoon5 ) - call Write_flyer_time_coord( tballoon6 ) - call Write_flyer_time_coord( tballoon7 ) - call Write_flyer_time_coord( tballoon8 ) - call Write_flyer_time_coord( tballoon9 ) - - call Write_flyer_time_coord( taircraft1 ) - call Write_flyer_time_coord( taircraft2 ) - call Write_flyer_time_coord( taircraft3 ) - call Write_flyer_time_coord( taircraft4 ) - call Write_flyer_time_coord( taircraft5 ) - call Write_flyer_time_coord( taircraft6 ) - call Write_flyer_time_coord( taircraft7 ) - call Write_flyer_time_coord( taircraft8 ) - call Write_flyer_time_coord( taircraft9 ) - call Write_flyer_time_coord( taircraft10 ) - call Write_flyer_time_coord( taircraft11 ) - call Write_flyer_time_coord( taircraft12 ) - call Write_flyer_time_coord( taircraft13 ) - call Write_flyer_time_coord( taircraft14 ) - call Write_flyer_time_coord( taircraft15 ) - call Write_flyer_time_coord( taircraft16 ) - call Write_flyer_time_coord( taircraft17 ) - call Write_flyer_time_coord( taircraft18 ) - call Write_flyer_time_coord( taircraft19 ) - call Write_flyer_time_coord( taircraft20 ) - call Write_flyer_time_coord( taircraft21 ) - call Write_flyer_time_coord( taircraft22 ) - call Write_flyer_time_coord( taircraft23 ) - call Write_flyer_time_coord( taircraft24 ) - call Write_flyer_time_coord( taircraft25 ) - call Write_flyer_time_coord( taircraft26 ) - call Write_flyer_time_coord( taircraft27 ) - call Write_flyer_time_coord( taircraft28 ) - call Write_flyer_time_coord( taircraft29 ) - call Write_flyer_time_coord( taircraft30 ) + do ji = 1, nballoons + call Write_flyer_time_coord( tballoons(ji) ) + end do + + do ji = 1, naircrafts + call Write_flyer_time_coord( taircrafts(ji) ) + end do end if end if !MNHDIACHRONIC diff --git a/src/MNH/aircraft_balloon.f90 b/src/MNH/aircraft_balloon.f90 index 4dd66cddee69fafebae5bd2bff7b287e87ee57e3..0c46dd014df7d8c34876144da39f445e32859bb6 100644 --- a/src/MNH/aircraft_balloon.f90 +++ b/src/MNH/aircraft_balloon.f90 @@ -130,13 +130,13 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE ! turbulent kinetic energy REAL, DIMENSION(:,:), INTENT(IN) :: PTS ! surface temperature REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! dry air density of the reference state REAL, DIMENSION(:,:,:), INTENT(IN) :: PCIT ! pristine ice concentration -REAL, DIMENSION(:,:),INTENT(IN) :: PSEA +REAL, DIMENSION(:,:), INTENT(IN) :: PSEA ! !------------------------------------------------------------------------------- ! ! 0.2 declaration of local variables ! -! +INTEGER :: JI !---------------------------------------------------------------------------- IF(.NOT. ALLOCATED(XTHW_FLUX)) & ALLOCATE(XTHW_FLUX(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3))) @@ -145,202 +145,17 @@ ALLOCATE(XRCW_FLUX(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3))) IF(.NOT. ALLOCATED(XSVW_FLUX)) & ALLOCATE(XSVW_FLUX(SIZE(PSV,1),SIZE(PSV,2),SIZE(PSV,3),SIZE(PSV,4))) ! -IF (TBALLOON1%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TBALLOON1, PSEA ) -ENDIF -IF (TBALLOON2%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TBALLOON2, PSEA ) -ENDIF -IF (TBALLOON3%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TBALLOON3, PSEA ) -ENDIF -IF (TBALLOON4%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TBALLOON4, PSEA ) -ENDIF -IF (TBALLOON5%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TBALLOON5, PSEA ) -ENDIF -IF (TBALLOON6%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TBALLOON6, PSEA ) -ENDIF -IF (TBALLOON7%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TBALLOON7, PSEA ) -ENDIF -IF (TBALLOON8%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TBALLOON8, PSEA ) -ENDIF -IF (TBALLOON9%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TBALLOON9, PSEA ) -ENDIF -! -IF (TAIRCRAFT1%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT1, PSEA ) -ENDIF -IF (TAIRCRAFT2%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT2, PSEA ) -ENDIF -IF (TAIRCRAFT3%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT3, PSEA ) -ENDIF -IF (TAIRCRAFT4%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT4, PSEA ) -ENDIF -IF (TAIRCRAFT5%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT5, PSEA ) -ENDIF -IF (TAIRCRAFT6%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT6, PSEA ) -ENDIF -IF (TAIRCRAFT7%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT7, PSEA ) -ENDIF -IF (TAIRCRAFT8%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT8, PSEA ) -ENDIF -IF (TAIRCRAFT9%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT9, PSEA ) -ENDIF -IF (TAIRCRAFT10%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT10, PSEA ) -ENDIF -IF (TAIRCRAFT11%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT11, PSEA ) -ENDIF -IF (TAIRCRAFT12%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT12, PSEA ) -ENDIF -IF (TAIRCRAFT13%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT13, PSEA ) -ENDIF -IF (TAIRCRAFT14%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT14, PSEA ) -ENDIF -IF (TAIRCRAFT15%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT15, PSEA ) -ENDIF -IF (TAIRCRAFT16%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT16, PSEA ) -ENDIF -IF (TAIRCRAFT17%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT17, PSEA ) -ENDIF -IF (TAIRCRAFT18%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT18, PSEA ) -ENDIF -IF (TAIRCRAFT19%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT19, PSEA ) -ENDIF -IF (TAIRCRAFT20%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT20, PSEA ) -ENDIF -IF (TAIRCRAFT21%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT21, PSEA ) -ENDIF -IF (TAIRCRAFT22%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT22, PSEA ) -ENDIF -IF (TAIRCRAFT23%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT23, PSEA ) -ENDIF -IF (TAIRCRAFT24%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT24, PSEA ) -ENDIF -IF (TAIRCRAFT25%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT25, PSEA ) -ENDIF -IF (TAIRCRAFT26%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT26, PSEA ) -ENDIF -IF (TAIRCRAFT27%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT27, PSEA ) -ENDIF -IF (TAIRCRAFT28%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT28, PSEA ) -ENDIF -IF (TAIRCRAFT29%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT29, PSEA ) -ENDIF -IF (TAIRCRAFT30%NMODEL /= 0) THEN -CALL AIRCRAFT_BALLOON_EVOL(PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & - PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & - TAIRCRAFT30, PSEA ) -ENDIF +DO JI = 1, NBALLOONS + CALL AIRCRAFT_BALLOON_EVOL( PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & + PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & + TBALLOONS(JI), PSEA ) +END DO +! +DO JI = 1, NBALLOONS + CALL AIRCRAFT_BALLOON_EVOL( PTSTEP, PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR, & + PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT, & + TAIRCRAFTS(JI), PSEA ) +END DO ! !---------------------------------------------------------------------------- ! diff --git a/src/MNH/ini_aircraft.f90 b/src/MNH/ini_aircraft.f90 index 254889818d147a5045d8c7e5bda9f663f38b56db..08d1a5e067aa566362d9ac505881e0ab1d697dd3 100644 --- a/src/MNH/ini_aircraft.f90 +++ b/src/MNH/ini_aircraft.f90 @@ -83,16 +83,16 @@ !! ------------- !! Original 15/05/2000 !! Sept2009, A. Boilley add initialisation of aircraft altitude by Z -!! -!! -!! -------------------------------------------------------------------------- +! P. Wautelet 06/2022: reorganize flyers +! -------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! USE MODD_AIRCRAFT_BALLOON -! -! + +USE MODE_MSG + IMPLICIT NONE ! ! @@ -105,54 +105,60 @@ IMPLICIT NONE ! ! !---------------------------------------------------------------------------- +NAIRCRAFTS = 0 + +ALLOCATE( TAIRCRAFTS(NAIRCRAFTS) ) + +IF ( NAIRCRAFTS < 1 ) RETURN ! !* 1. Aircraft number 1 ! ----------------- +#if 0 ! !* model number ! -TAIRCRAFT1%NMODEL = 0 +TAIRCRAFTS(1)%NMODEL = 0 ! !* model switch ! -TAIRCRAFT1%MODEL = 'FIX' +TAIRCRAFTS(1)%MODEL = 'FIX' ! !* aircraft type ! -TAIRCRAFT1%TYPE = 'AIRCRA' +TAIRCRAFTS(1)%TYPE = 'AIRCRA' ! !* aircraft flight name ! -TAIRCRAFT1%TITLE = 'DIMO19A' +TAIRCRAFTS(1)%TITLE = 'DIMO19A' ! !* time step for storage ! -TAIRCRAFT1%TFLYER_TIME%XTSTEP = 60. +TAIRCRAFTS(1)%TFLYER_TIME%XTSTEP = 60. ! !* take-off date and time ! -TAIRCRAFT1%LAUNCH%nyear = 2007 -TAIRCRAFT1%LAUNCH%nmonth = 04 -TAIRCRAFT1%LAUNCH%nday = 19 -TAIRCRAFT1%LAUNCH%xtime = 32280. +TAIRCRAFTS(1)%LAUNCH%nyear = 2007 +TAIRCRAFTS(1)%LAUNCH%nmonth = 04 +TAIRCRAFTS(1)%LAUNCH%nday = 19 +TAIRCRAFTS(1)%LAUNCH%xtime = 32280. ! !* number of flight segments ! -TAIRCRAFT1%SEG = 168 +TAIRCRAFTS(1)%SEG = 168 ! !* initalisation of flag for pressure (T) or Z(F) for aicraft altitude ! -TAIRCRAFT1%ALTDEF = .TRUE. +TAIRCRAFTS(1)%ALTDEF = .TRUE. ! !* allocation of the arrays ! -ALLOCATE(TAIRCRAFT1%SEGTIME(TAIRCRAFT1%SEG )) -ALLOCATE(TAIRCRAFT1%SEGLAT (TAIRCRAFT1%SEG+1)) -ALLOCATE(TAIRCRAFT1%SEGLON (TAIRCRAFT1%SEG+1)) +ALLOCATE(TAIRCRAFTS(1)%SEGTIME(TAIRCRAFTS(1)%SEG )) +ALLOCATE(TAIRCRAFTS(1)%SEGLAT (TAIRCRAFTS(1)%SEG+1)) +ALLOCATE(TAIRCRAFTS(1)%SEGLON (TAIRCRAFTS(1)%SEG+1)) ! !* duration of the segments (seconds) ! -TAIRCRAFT1%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& +TAIRCRAFTS(1)%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& @@ -184,7 +190,7 @@ TAIRCRAFT1%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& !* latitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT1%SEGLAT = (/ 44.39971, 44.40095, 44.40040, 44.39919, 44.39657,& +TAIRCRAFTS(1)%SEGLAT = (/ 44.39971, 44.40095, 44.40040, 44.39919, 44.39657,& 44.39339, 44.38749, 44.37916, 44.37464, 44.37021,& 44.37045, 44.37059, 44.37443, 44.37222, 44.35214,& 44.36092, 44.38175, 44.40122, 44.41992, 44.43539,& @@ -222,7 +228,7 @@ TAIRCRAFT1%SEGLAT = (/ 44.39971, 44.40095, 44.40040, 44.39919, 44.39657,& !* longitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT1%SEGLON = (/0.75561, 0.73090, 0.70157, 0.66896, 0.63468,& +TAIRCRAFTS(1)%SEGLON = (/0.75561, 0.73090, 0.70157, 0.66896, 0.63468,& 0.60107, 0.56909, 0.53738, 0.50474, 0.47315,& 0.44092, 0.40665, 0.37725, 0.35171, 0.33016,& 0.31340, 0.29638, 0.27594, 0.25293, 0.22663,& @@ -255,14 +261,14 @@ TAIRCRAFT1%SEGLON = (/0.75561, 0.73090, 0.70157, 0.66896, 0.63468,& 0.31926, 0.35232, 0.38587, 0.41831, 0.45384,& 0.49099, 0.52731, 0.56261, 0.59614, 0.63308,& 0.67001, 0.70471, 0.73740, 0.76830, 0.76841,& - 0.75848, 0.76209, 0.76315, 0.76335 /) + 0.75848, 0.76209, 0.76315, 0.76335 /) ! !* pressure of the segments ends (1st point is takeoff, last point is landing) ! (pascals) ! -IF (TAIRCRAFT1%ALTDEF) THEN - ALLOCATE(TAIRCRAFT1%SEGP (TAIRCRAFT1%SEG+1)) - TAIRCRAFT1%SEGP = 100. * (/1003.6, 990.8, 988.1, 988.5, 989.3,& +IF (TAIRCRAFTS(1)%ALTDEF) THEN + ALLOCATE(TAIRCRAFTS(1)%SEGP (TAIRCRAFTS(1)%SEG+1)) + TAIRCRAFTS(1)%SEGP = 100. * (/1003.6, 990.8, 988.1, 988.5, 989.3,& 988.9, 989.6, 989.9, 990.3, 989.2,& 990.8, 993.9, 987.7, 987.2, 992.0,& 995.2, 993.9, 994.0, 994.3, 993.9,& @@ -297,8 +303,8 @@ IF (TAIRCRAFT1%ALTDEF) THEN 989.5, 981.8, 977.8, 983.3,1001.9,& 1007.0,1006.8,1006.8, 1006.8 /) ELSE - ALLOCATE(TAIRCRAFT1%SEGZ (TAIRCRAFT1%SEG+1)) -TAIRCRAFT1%SEGZ = (/8000,8000,8000,8000,8000,& + ALLOCATE(TAIRCRAFTS(1)%SEGZ (TAIRCRAFTS(1)%SEG+1)) +TAIRCRAFTS(1)%SEGZ = (/8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& @@ -331,58 +337,63 @@ TAIRCRAFT1%SEGZ = (/8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& -8000,8000,8000,8000 /) +8000,8000,8000,8000 /) ENDIF ! +IF ( NAIRCRAFTS < 2 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 1. Aircraft number 2 ! ----------------- +#if 0 ! !* model number ! -TAIRCRAFT2%NMODEL = 0 +TAIRCRAFTS(2)%NMODEL = 0 ! !* model switch ! -TAIRCRAFT2%MODEL = 'FIX' +TAIRCRAFTS(2)%MODEL = 'FIX' ! !* aircraft type ! -TAIRCRAFT2%TYPE = 'AIRCRA' +TAIRCRAFTS(2)%TYPE = 'AIRCRA' !* aircraft flight name ! -TAIRCRAFT2%TITLE = 'DIMO19B' +TAIRCRAFTS(2)%TITLE = 'DIMO19B' ! !* time step for storage ! -TAIRCRAFT2%TFLYER_TIME%XTSTEP = 60. +TAIRCRAFTS(2)%TFLYER_TIME%XTSTEP = 60. ! !* take-off date and time ! -TAIRCRAFT2%LAUNCH%nyear = 2007 -TAIRCRAFT2%LAUNCH%nmonth = 04 -TAIRCRAFT2%LAUNCH%nday = 19 -TAIRCRAFT2%LAUNCH%xtime = 48060. +TAIRCRAFTS(2)%LAUNCH%nyear = 2007 +TAIRCRAFTS(2)%LAUNCH%nmonth = 04 +TAIRCRAFTS(2)%LAUNCH%nday = 19 +TAIRCRAFTS(2)%LAUNCH%xtime = 48060. ! !* number of flight segments ! -TAIRCRAFT2%SEG = 198 +TAIRCRAFTS(2)%SEG = 198 ! !* initalisation of flag for pressure (T) or Z(F) for aicraft altitude ! -TAIRCRAFT2%ALTDEF = .TRUE. +TAIRCRAFTS(2)%ALTDEF = .TRUE. ! !* allocation of the arrays ! -ALLOCATE(TAIRCRAFT2%SEGTIME(TAIRCRAFT2%SEG )) -ALLOCATE(TAIRCRAFT2%SEGLAT (TAIRCRAFT2%SEG+1)) -ALLOCATE(TAIRCRAFT2%SEGLON (TAIRCRAFT2%SEG+1)) +ALLOCATE(TAIRCRAFTS(2)%SEGTIME(TAIRCRAFTS(2)%SEG )) +ALLOCATE(TAIRCRAFTS(2)%SEGLAT (TAIRCRAFTS(2)%SEG+1)) +ALLOCATE(TAIRCRAFTS(2)%SEGLON (TAIRCRAFTS(2)%SEG+1)) ! !* duration of the segments (seconds) ! -TAIRCRAFT2%SEGTIME = (/60, 60, 60, 60, 60, 60,& +TAIRCRAFTS(2)%SEGTIME = (/60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& @@ -419,7 +430,7 @@ TAIRCRAFT2%SEGTIME = (/60, 60, 60, 60, 60, 60,& !* latitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT2%SEGLAT = (/ 44.39819, 44.39967, 44.40104, 44.40074, 44.40085,& +TAIRCRAFTS(2)%SEGLAT = (/ 44.39819, 44.39967, 44.40104, 44.40074, 44.40085,& 44.39843, 44.39619, 44.39141, 44.38353, 44.37732,& 44.37508, 44.37609, 44.37377, 44.36764, 44.36083,& 44.35442, 44.37187, 44.39327, 44.41394, 44.43280,& @@ -463,7 +474,7 @@ TAIRCRAFT2%SEGLAT = (/ 44.39819, 44.39967, 44.40104, 44.40074, 44.40085,& !* longitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT2%SEGLON = (/0.76323, 0.75549, 0.73212, 0.70405, 0.67289,& +TAIRCRAFTS(2)%SEGLON = (/0.76323, 0.75549, 0.73212, 0.70405, 0.67289,& 0.64082, 0.60831, 0.57717, 0.54697, 0.51578,& 0.48245, 0.45056, 0.41783, 0.38851, 0.36046,& 0.32828, 0.30353, 0.28176, 0.25886, 0.23647,& @@ -507,9 +518,9 @@ TAIRCRAFT2%SEGLON = (/0.76323, 0.75549, 0.73212, 0.70405, 0.67289,& !* pressure of the segments ends (1st point is takeoff, last point is landing) ! (pascals) ! -IF (TAIRCRAFT2%ALTDEF) THEN - ALLOCATE(TAIRCRAFT2%SEGP (TAIRCRAFT2%SEG+1)) -TAIRCRAFT2%SEGP = 100. * (/1001.,1001.0, 989.2, 987.5, 987.5,& +IF (TAIRCRAFTS(2)%ALTDEF) THEN + ALLOCATE(TAIRCRAFTS(2)%SEGP (TAIRCRAFTS(2)%SEG+1)) +TAIRCRAFTS(2)%SEGP = 100. * (/1001.,1001.0, 989.2, 987.5, 987.5,& 987.9, 989.1, 990.2, 989.3, 988.6,& 989.8, 989.6, 991.0, 986.1, 980.7,& 986.5, 991.9, 991.5, 993.0, 992.1,& @@ -550,8 +561,8 @@ TAIRCRAFT2%SEGP = 100. * (/1001.,1001.0, 989.2, 987.5, 987.5,& 975.8, 993.9,1004.1,1004.1,1004.1,& 1004.1,1004.1,1004.1,1004.1 /) ELSE - ALLOCATE(TAIRCRAFT2%SEGZ (TAIRCRAFT2%SEG+1)) - TAIRCRAFT2%SEGZ = (/8000,8000,8000,8000,8000,& + ALLOCATE(TAIRCRAFTS(2)%SEGZ (TAIRCRAFTS(2)%SEG+1)) + TAIRCRAFTS(2)%SEGZ = (/8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& @@ -593,55 +604,60 @@ ELSE 8000,8000,8000,8000 /) ENDIF ! +IF ( NAIRCRAFTS < 3 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 1. Aircraft number 3 ! ----------------- +#if 0 ! !* model number ! -TAIRCRAFT3%NMODEL = 0 +TAIRCRAFTS(3)%NMODEL = 0 ! !* model switch ! -TAIRCRAFT3%MODEL = 'FIX' +TAIRCRAFTS(3)%MODEL = 'FIX' ! !* aircraft type ! -TAIRCRAFT3%TYPE = 'AIRCRA' +TAIRCRAFTS(3)%TYPE = 'AIRCRA' !* aircraft flight name ! -TAIRCRAFT3%TITLE = 'SAAL19A' +TAIRCRAFTS(3)%TITLE = 'SAAL19A' ! !* time step for storage ! -TAIRCRAFT3%TFLYER_TIME%XTSTEP = 30. +TAIRCRAFTS(3)%TFLYER_TIME%XTSTEP = 30. ! !* take-off date and time ! -TAIRCRAFT3%LAUNCH%nyear = 2007 -TAIRCRAFT3%LAUNCH%nmonth = 04 -TAIRCRAFT3%LAUNCH%nday = 19 -TAIRCRAFT3%LAUNCH%xtime = 45369 +TAIRCRAFTS(3)%LAUNCH%nyear = 2007 +TAIRCRAFTS(3)%LAUNCH%nmonth = 04 +TAIRCRAFTS(3)%LAUNCH%nday = 19 +TAIRCRAFTS(3)%LAUNCH%xtime = 45369 ! !* number of flight segments ! -TAIRCRAFT3%SEG = 39 +TAIRCRAFTS(3)%SEG = 39 ! !* initalisation of flag for pressure (T) or Z(F) for aicraft altitude ! -TAIRCRAFT3%ALTDEF = .TRUE. +TAIRCRAFTS(3)%ALTDEF = .TRUE. ! !* allocation of the arrays ! -ALLOCATE(TAIRCRAFT3%SEGTIME(TAIRCRAFT3%SEG )) -ALLOCATE(TAIRCRAFT3%SEGLAT (TAIRCRAFT3%SEG+1)) -ALLOCATE(TAIRCRAFT3%SEGLON (TAIRCRAFT3%SEG+1)) +ALLOCATE(TAIRCRAFTS(3)%SEGTIME(TAIRCRAFTS(3)%SEG )) +ALLOCATE(TAIRCRAFTS(3)%SEGLAT (TAIRCRAFTS(3)%SEG+1)) +ALLOCATE(TAIRCRAFTS(3)%SEGLON (TAIRCRAFTS(3)%SEG+1)) ! !* duration of the segments (seconds) ! -TAIRCRAFT3%SEGTIME = (/ 15, 16, 16, 18, 17, 17,& +TAIRCRAFTS(3)%SEGTIME = (/ 15, 16, 16, 18, 17, 17,& 22, 25, 19, 19, 22, 27,& 28, 27, 29, 32, 30, 24,& 169, 18, 15, 18, 17, 16,& @@ -653,7 +669,7 @@ TAIRCRAFT3%SEGTIME = (/ 15, 16, 16, 18, 17, 17,& !* latitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT3%SEGLAT = (/ 44.14451, 44.14084, 44.14068, 44.14479, 44.14884,& +TAIRCRAFTS(3)%SEGLAT = (/ 44.14451, 44.14084, 44.14068, 44.14479, 44.14884,& 44.14843, 44.14437, 44.14127, 44.14574, 44.14858,& 44.14655, 44.14130, 44.14384, 44.14738, 44.14158,& 44.14245, 44.14607, 44.14023, 44.14227, 44.15136,& @@ -665,7 +681,7 @@ TAIRCRAFT3%SEGLAT = (/ 44.14451, 44.14084, 44.14068, 44.14479, 44.14884,& !* longitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT3%SEGLON = (/0.95322, 0.95562, 0.96155, 0.96490, 0.96186,& +TAIRCRAFTS(3)%SEGLON = (/0.95322, 0.95562, 0.96155, 0.96490, 0.96186,& 0.95576, 0.95421, 0.96105, 0.96593, 0.96076,& 0.95485, 0.95618, 0.96341, 0.95769, 0.95681,& 0.96585, 0.96073, 0.96158, 0.97041, 0.96299,& @@ -677,9 +693,9 @@ TAIRCRAFT3%SEGLON = (/0.95322, 0.95562, 0.96155, 0.96490, 0.96186,& !* pressure of the segments ends (1st point is takeoff, last point is landing) ! (pascals) ! -IF (TAIRCRAFT3%ALTDEF) THEN - ALLOCATE(TAIRCRAFT3%SEGP (TAIRCRAFT3%SEG+1)) -TAIRCRAFT3%SEGP = 100. * (/ 992.5, 987.4, 982.1, 976.4, 969.3,& +IF (TAIRCRAFTS(3)%ALTDEF) THEN + ALLOCATE(TAIRCRAFTS(3)%SEGP (TAIRCRAFTS(3)%SEG+1)) +TAIRCRAFTS(3)%SEGP = 100. * (/ 992.5, 987.4, 982.1, 976.4, 969.3,& 964.3, 958.4, 952.9, 947.5, 942.8,& 936.5, 930.8, 925.6, 919.8, 914.6,& 909.2, 903.6, 898.0, 893.0, 881.8,& @@ -688,8 +704,8 @@ TAIRCRAFT3%SEGP = 100. * (/ 992.5, 987.4, 982.1, 976.4, 969.3,& 940.4, 946.6, 951.8, 957.8, 963.1,& 969.1, 974.1, 980.0, 986.0, 993.0 /) ELSE - ALLOCATE(TAIRCRAFT3%SEGZ (TAIRCRAFT3%SEG+1)) - TAIRCRAFT3%SEGZ = (/8000,8000,8000,8000,8000,& + ALLOCATE(TAIRCRAFTS(3)%SEGZ (TAIRCRAFTS(3)%SEG+1)) + TAIRCRAFTS(3)%SEGZ = (/8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& @@ -698,57 +714,61 @@ ELSE 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000 /) ENDIF - ! +IF ( NAIRCRAFTS < 4 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 1. Aircraft number 4 ! ----------------- +#if 0 ! !* model number ! -TAIRCRAFT4%NMODEL = 0 +TAIRCRAFTS(4)%NMODEL = 0 ! !* model switch ! -TAIRCRAFT4%MODEL = 'FIX' +TAIRCRAFTS(4)%MODEL = 'FIX' ! !* aircraft type ! -TAIRCRAFT4%TYPE = 'AIRCRA' +TAIRCRAFTS(4)%TYPE = 'AIRCRA' !* aircraft flight name ! -TAIRCRAFT4%TITLE = 'SAAL19B' +TAIRCRAFTS(4)%TITLE = 'SAAL19B' ! !* time step for storage ! -TAIRCRAFT4%TFLYER_TIME%XTSTEP = 30. +TAIRCRAFTS(4)%TFLYER_TIME%XTSTEP = 30. ! !* take-off date and time ! -TAIRCRAFT4%LAUNCH%nyear = 2007 -TAIRCRAFT4%LAUNCH%nmonth = 04 -TAIRCRAFT4%LAUNCH%nday = 19 -TAIRCRAFT4%LAUNCH%xtime = 60392. +TAIRCRAFTS(4)%LAUNCH%nyear = 2007 +TAIRCRAFTS(4)%LAUNCH%nmonth = 04 +TAIRCRAFTS(4)%LAUNCH%nday = 19 +TAIRCRAFTS(4)%LAUNCH%xtime = 60392. ! !* number of flight segments ! -TAIRCRAFT4%SEG = 39 +TAIRCRAFTS(4)%SEG = 39 ! !* initalisation of flag for pressure (T) or Z(F) for aicraft altitude ! -TAIRCRAFT4%ALTDEF = .TRUE. +TAIRCRAFTS(4)%ALTDEF = .TRUE. ! !* allocation of the arrays ! -ALLOCATE(TAIRCRAFT4%SEGTIME(TAIRCRAFT4%SEG )) -ALLOCATE(TAIRCRAFT4%SEGLAT (TAIRCRAFT4%SEG+1)) -ALLOCATE(TAIRCRAFT4%SEGLON (TAIRCRAFT4%SEG+1)) +ALLOCATE(TAIRCRAFTS(4)%SEGTIME(TAIRCRAFTS(4)%SEG )) +ALLOCATE(TAIRCRAFTS(4)%SEGLAT (TAIRCRAFTS(4)%SEG+1)) +ALLOCATE(TAIRCRAFTS(4)%SEGLON (TAIRCRAFTS(4)%SEG+1)) ! !* duration of the segments (seconds) ! -TAIRCRAFT4%SEGTIME = (/ 36, 18, 18, 21, 24, 23,& +TAIRCRAFTS(4)%SEGTIME = (/ 36, 18, 18, 21, 24, 23,& 20, 20, 25, 27, 21, 25,& 27, 23, 21, 23, 25, 21,& 27, 190, 17, 17, 18, 17,& @@ -759,7 +779,7 @@ TAIRCRAFT4%SEGTIME = (/ 36, 18, 18, 21, 24, 23,& !* latitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT4%SEGLAT = (/ 44.14025, 44.13824, 44.14291, 44.14575, 44.14321,& +TAIRCRAFTS(4)%SEGLAT = (/ 44.14025, 44.13824, 44.14291, 44.14575, 44.14321,& 44.13749, 44.13853, 44.14373, 44.14530, 44.13921,& 44.13773, 44.14285, 44.13974, 44.13622, 44.14093,& 44.14375, 44.13868, 44.13771, 44.14272, 44.14156,& @@ -771,7 +791,7 @@ TAIRCRAFT4%SEGLAT = (/ 44.14025, 44.13824, 44.14291, 44.14575, 44.14321,& !* longitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT4%SEGLON = (/ 0.94868, 0.95712, 0.95820, 0.95265, 0.94556,& +TAIRCRAFTS(4)%SEGLON = (/ 0.94868, 0.95712, 0.95820, 0.95265, 0.94556,& 0.94730, 0.95518, 0.95559, 0.94882, 0.94656,& 0.95488, 0.95463, 0.94889, 0.95589, 0.95988,& 0.95389, 0.95076, 0.95834, 0.95888, 0.95095,& @@ -783,9 +803,9 @@ TAIRCRAFT4%SEGLON = (/ 0.94868, 0.95712, 0.95820, 0.95265, 0.94556,& !* pressure of the segments ends (1st point is takeoff, last point is landing) ! (pascals) ! -IF (TAIRCRAFT4%ALTDEF) THEN - ALLOCATE(TAIRCRAFT4%SEGP (TAIRCRAFT4%SEG+1)) -TAIRCRAFT4%SEGP = 100. * (/ 992.3, 985.4, 979.9, 974.2, 969.2,& +IF (TAIRCRAFTS(4)%ALTDEF) THEN + ALLOCATE(TAIRCRAFTS(4)%SEGP (TAIRCRAFTS(4)%SEG+1)) +TAIRCRAFTS(4)%SEGP = 100. * (/ 992.3, 985.4, 979.9, 974.2, 969.2,& 962.8, 957.7, 952.1, 946.3, 940.5,& 935.3, 930.4, 924.0, 918.9, 913.4,& 907.8, 902.8, 897.1, 892.2, 886.3,& @@ -794,8 +814,8 @@ TAIRCRAFT4%SEGP = 100. * (/ 992.3, 985.4, 979.9, 974.2, 969.2,& 934.6, 940.3, 946.0, 951.4, 956.5,& 962.8, 968.1, 973.7, 979.3, 984.9 /) ELSE - ALLOCATE(TAIRCRAFT4%SEGZ (TAIRCRAFT4%SEG+1)) - TAIRCRAFT4%SEGZ = (/8000,8000,8000,8000,8000,& + ALLOCATE(TAIRCRAFTS(4)%SEGZ (TAIRCRAFTS(4)%SEG+1)) + TAIRCRAFTS(4)%SEGZ = (/8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& @@ -804,57 +824,61 @@ TAIRCRAFT4%SEGP = 100. * (/ 992.3, 985.4, 979.9, 974.2, 969.2,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000/) ENDIF - ! +IF ( NAIRCRAFTS < 5 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 1. Aircraft number 5 ! ----------------- +#if 0 ! !* model number ! -TAIRCRAFT5%NMODEL = 0 +TAIRCRAFTS(5)%NMODEL = 0 ! !* model switch ! -TAIRCRAFT5%MODEL = 'FIX' +TAIRCRAFTS(5)%MODEL = 'FIX' ! !* aircraft type ! -TAIRCRAFT5%TYPE = 'AIRCRA' +TAIRCRAFTS(5)%TYPE = 'AIRCRA' !* aircraft flight name ! -TAIRCRAFT5%TITLE = 'SAIB19A' +TAIRCRAFTS(5)%TITLE = 'SAIB19A' ! !* time step for storage ! -TAIRCRAFT5%TFLYER_TIME%XTSTEP = 30. +TAIRCRAFTS(5)%TFLYER_TIME%XTSTEP = 30. ! !* take-off date and time ! -TAIRCRAFT5%LAUNCH%nyear = 2007 -TAIRCRAFT5%LAUNCH%nmonth = 04 -TAIRCRAFT5%LAUNCH%nday = 19 -TAIRCRAFT5%LAUNCH%xtime = 43380. +TAIRCRAFTS(5)%LAUNCH%nyear = 2007 +TAIRCRAFTS(5)%LAUNCH%nmonth = 04 +TAIRCRAFTS(5)%LAUNCH%nday = 19 +TAIRCRAFTS(5)%LAUNCH%xtime = 43380. ! !* number of flight segments ! -TAIRCRAFT5%SEG = 176 +TAIRCRAFTS(5)%SEG = 176 ! !* initalisation of flag for pressure (T) or Z(F) for aicraft altitude ! -TAIRCRAFT5%ALTDEF = .TRUE. +TAIRCRAFTS(5)%ALTDEF = .TRUE. ! !* allocation of the arrays ! -ALLOCATE(TAIRCRAFT5%SEGTIME(TAIRCRAFT5%SEG )) -ALLOCATE(TAIRCRAFT5%SEGLAT (TAIRCRAFT5%SEG+1)) -ALLOCATE(TAIRCRAFT5%SEGLON (TAIRCRAFT5%SEG+1)) +ALLOCATE(TAIRCRAFTS(5)%SEGTIME(TAIRCRAFTS(5)%SEG )) +ALLOCATE(TAIRCRAFTS(5)%SEGLAT (TAIRCRAFTS(5)%SEG+1)) +ALLOCATE(TAIRCRAFTS(5)%SEGLON (TAIRCRAFTS(5)%SEG+1)) ! !* duration of the segments (seconds) ! -TAIRCRAFT5%SEGTIME = (/ 28, 28, 29, 29, 29, 28,& +TAIRCRAFTS(5)%SEGTIME = (/ 28, 28, 29, 29, 29, 28,& 28, 28, 29, 26, 28, 27,& 28, 27, 28, 27, 25, 27,& 27, 26, 24, 25, 26, 26,& @@ -889,7 +913,7 @@ TAIRCRAFT5%SEGTIME = (/ 28, 28, 29, 29, 29, 28,& !* latitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT5%SEGLAT = (/44.38992, 44.38830, 44.38713, 44.38609, 44.38512,& +TAIRCRAFTS(5)%SEGLAT = (/44.38992, 44.38830, 44.38713, 44.38609, 44.38512,& 44.38420, 44.38336, 44.38248, 44.38151, 44.38046,& 44.37942, 44.37835, 44.37729, 44.37630, 44.37530,& 44.37407, 44.37156, 44.36766, 44.36184, 44.35421,& @@ -930,7 +954,7 @@ TAIRCRAFT5%SEGLAT = (/44.38992, 44.38830, 44.38713, 44.38609, 44.38512,& !* longitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT5%SEGLON = (/ 0.60996, 0.59790, 0.58554, 0.57296, 0.56046,& +TAIRCRAFTS(5)%SEGLON = (/ 0.60996, 0.59790, 0.58554, 0.57296, 0.56046,& 0.54813, 0.53613, 0.52410, 0.51125, 0.49815,& 0.48593, 0.47312, 0.46084, 0.44829, 0.43635,& 0.42374, 0.41321, 0.40397, 0.39536, 0.38761,& @@ -971,9 +995,9 @@ TAIRCRAFT5%SEGLON = (/ 0.60996, 0.59790, 0.58554, 0.57296, 0.56046,& !* pressure of the segments ends (1st point is takeoff, last point is landing) ! (pascals) ! -IF (TAIRCRAFT5%ALTDEF) THEN - ALLOCATE(TAIRCRAFT5%SEGP (TAIRCRAFT5%SEG+1)) -TAIRCRAFT5%SEGP = 100. * (/ 995.7, 998.1, 998.7, 998.8, 999.1,& +IF (TAIRCRAFTS(5)%ALTDEF) THEN + ALLOCATE(TAIRCRAFTS(5)%SEGP (TAIRCRAFTS(5)%SEG+1)) +TAIRCRAFTS(5)%SEGP = 100. * (/ 995.7, 998.1, 998.7, 998.8, 999.1,& 999.3, 999.9,1000.4,1000.7,1000.6,& 1000.8,1000.8,1000.6,1000.5,1000.1,& 999.7, 999.2, 999.2, 999.6,1000.5,& @@ -1010,8 +1034,8 @@ TAIRCRAFT5%SEGP = 100. * (/ 995.7, 998.1, 998.7, 998.8, 999.1,& 995.4, 995.4, 995.3, 994.8, 994.5,& 994.1, 994.4 /) ELSE - ALLOCATE(TAIRCRAFT5%SEGZ (TAIRCRAFT5%SEG+1)) - TAIRCRAFT5%SEGZ = (/8000,8000,8000,8000,8000,& + ALLOCATE(TAIRCRAFTS(5)%SEGZ (TAIRCRAFTS(5)%SEG+1)) + TAIRCRAFTS(5)%SEGZ = (/8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& @@ -1049,56 +1073,60 @@ TAIRCRAFT5%SEGP = 100. * (/ 995.7, 998.1, 998.7, 998.8, 999.1,& 8000,8000/) ENDIF ! -! +IF ( NAIRCRAFTS < 6 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 1. Aircraft number 6 ! ----------------- ! +#if 0 !* model number ! -TAIRCRAFT6%NMODEL = 0 +TAIRCRAFTS(6)%NMODEL = 0 ! !* model switch ! -TAIRCRAFT6%MODEL = 'FIX' +TAIRCRAFTS(6)%MODEL = 'FIX' ! !* aircraft type ! -TAIRCRAFT6%TYPE = 'AIRCRA' +TAIRCRAFTS(6)%TYPE = 'AIRCRA' !* aircraft flight name ! -TAIRCRAFT6%TITLE = 'SAIB19B' +TAIRCRAFTS(6)%TITLE = 'SAIB19B' ! !* time step for storage ! -TAIRCRAFT6%TFLYER_TIME%XTSTEP = 30. +TAIRCRAFTS(6)%TFLYER_TIME%XTSTEP = 30. ! !* take-off date and time ! -TAIRCRAFT6%LAUNCH%nyear = 2007 -TAIRCRAFT6%LAUNCH%nmonth = 04 -TAIRCRAFT6%LAUNCH%nday = 19 -TAIRCRAFT6%LAUNCH%xtime = 55992. +TAIRCRAFTS(6)%LAUNCH%nyear = 2007 +TAIRCRAFTS(6)%LAUNCH%nmonth = 04 +TAIRCRAFTS(6)%LAUNCH%nday = 19 +TAIRCRAFTS(6)%LAUNCH%xtime = 55992. ! !* number of flight segments ! -TAIRCRAFT6%SEG = 179 +TAIRCRAFTS(6)%SEG = 179 ! !* initalisation of flag for pressure (T) or Z(F) for aicraft altitude ! -TAIRCRAFT6%ALTDEF = .TRUE. +TAIRCRAFTS(6)%ALTDEF = .TRUE. ! !* allocation of the arrays ! -ALLOCATE(TAIRCRAFT6%SEGTIME(TAIRCRAFT6%SEG )) -ALLOCATE(TAIRCRAFT6%SEGLAT (TAIRCRAFT6%SEG+1)) -ALLOCATE(TAIRCRAFT6%SEGLON (TAIRCRAFT6%SEG+1)) +ALLOCATE(TAIRCRAFTS(6)%SEGTIME(TAIRCRAFTS(6)%SEG )) +ALLOCATE(TAIRCRAFTS(6)%SEGLAT (TAIRCRAFTS(6)%SEG+1)) +ALLOCATE(TAIRCRAFTS(6)%SEGLON (TAIRCRAFTS(6)%SEG+1)) ! !* duration of the segments (seconds) ! -TAIRCRAFT6%SEGTIME = (/ 27, 25, 26, 25, 25, 25,& +TAIRCRAFTS(6)%SEGTIME = (/ 27, 25, 26, 25, 25, 25,& 25, 27, 28, 25, 26, 25,& 26, 26, 26, 26, 25, 27,& 27, 27, 27, 28, 28, 25,& @@ -1132,7 +1160,7 @@ TAIRCRAFT6%SEGTIME = (/ 27, 25, 26, 25, 25, 25,& !* latitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT6%SEGLAT = (/ 44.14614, 44.14841, 44.15199, 44.15888, 44.16587,& +TAIRCRAFTS(6)%SEGLAT = (/ 44.14614, 44.14841, 44.15199, 44.15888, 44.16587,& 44.17280, 44.17953, 44.18641, 44.19343, 44.20074,& 44.20752, 44.21445, 44.22139, 44.22865, 44.23605,& 44.24331, 44.25045, 44.25722, 44.26426, 44.27113,& @@ -1172,7 +1200,7 @@ TAIRCRAFT6%SEGLAT = (/ 44.14614, 44.14841, 44.15199, 44.15888, 44.16587,& !* longitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT6%SEGLON = (/-0.91544,-0.91300,-0.91007,-0.90375,-0.89495,& +TAIRCRAFTS(6)%SEGLON = (/-0.91544,-0.91300,-0.91007,-0.90375,-0.89495,& -0.88708,-0.87983,-0.87229,-0.86452,-0.85654,& -0.84914,-0.84153,-0.83408,-0.82634,-0.81846,& -0.81096,-0.80323,-0.79569,-0.78779,-0.78020,& @@ -1212,9 +1240,9 @@ TAIRCRAFT6%SEGLON = (/-0.91544,-0.91300,-0.91007,-0.90375,-0.89495,& !* pressure of the segments ends (1st point is takeoff, last point is landing) ! (pascals) ! -IF (TAIRCRAFT6%ALTDEF) THEN - ALLOCATE(TAIRCRAFT6%SEGP (TAIRCRAFT6%SEG+1)) -TAIRCRAFT6%SEGP = 100. * (/ 990.1, 990.5, 991.1, 992.6, 993.7,& +IF (TAIRCRAFTS(6)%ALTDEF) THEN + ALLOCATE(TAIRCRAFTS(6)%SEGP (TAIRCRAFTS(6)%SEG+1)) +TAIRCRAFTS(6)%SEGP = 100. * (/ 990.1, 990.5, 991.1, 992.6, 993.7,& 993.5, 993.2, 993.5, 993.8, 994.1,& 994.4, 994.3, 994.3, 994.7, 995.4,& 996.0, 996.2, 996.3, 996.1, 996.0,& @@ -1251,8 +1279,8 @@ TAIRCRAFT6%SEGP = 100. * (/ 990.1, 990.5, 991.1, 992.6, 993.7,& 999.2, 999.2, 999.2, 998.9, 998.4,& 997.7, 997.1, 996.8, 996.9, 996.9 /) ELSE - ALLOCATE(TAIRCRAFT6%SEGZ (TAIRCRAFT6%SEG+1)) - TAIRCRAFT6%SEGZ = (/8000,8000,8000,8000,8000,& + ALLOCATE(TAIRCRAFTS(6)%SEGZ (TAIRCRAFTS(6)%SEG+1)) + TAIRCRAFTS(6)%SEGZ = (/8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& @@ -1290,56 +1318,61 @@ TAIRCRAFT6%SEGP = 100. * (/ 990.1, 990.5, 991.1, 992.6, 993.7,& 8000,8000,8000,8000,8000/) ENDIF ! +IF ( NAIRCRAFTS < 7 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! ! !* 1. Aircraft number 7 ! ----------------- ! +#if 0 !* model number ! -TAIRCRAFT7%NMODEL = 0 +TAIRCRAFTS(7)%NMODEL = 0 ! !* model switch ! -TAIRCRAFT7%MODEL = 'FIX' +TAIRCRAFTS(7)%MODEL = 'FIX' ! !* aircraft type ! -TAIRCRAFT7%TYPE = 'AIRCRA' +TAIRCRAFTS(7)%TYPE = 'AIRCRA' !* aircraft flight name ! -TAIRCRAFT7%TITLE = 'TEST_19' +TAIRCRAFTS(7)%TITLE = 'TEST_19' ! !* time step for storage ! -TAIRCRAFT7%TFLYER_TIME%XTSTEP = 60. +TAIRCRAFTS(7)%TFLYER_TIME%XTSTEP = 60. ! !* take-off date and time ! -TAIRCRAFT7%LAUNCH%nyear = 2007 -TAIRCRAFT7%LAUNCH%nmonth = 04 -TAIRCRAFT7%LAUNCH%nday = 19 -TAIRCRAFT7%LAUNCH%xtime = 43500. +TAIRCRAFTS(7)%LAUNCH%nyear = 2007 +TAIRCRAFTS(7)%LAUNCH%nmonth = 04 +TAIRCRAFTS(7)%LAUNCH%nday = 19 +TAIRCRAFTS(7)%LAUNCH%xtime = 43500. ! !* number of flight segments ! -TAIRCRAFT7%SEG = 207 +TAIRCRAFTS(7)%SEG = 207 ! !* initalisation of flag for pressure (T) or Z(F) for aicraft altitude ! -TAIRCRAFT7%ALTDEF = .TRUE. +TAIRCRAFTS(7)%ALTDEF = .TRUE. ! !* allocation of the arrays ! -ALLOCATE(TAIRCRAFT7%SEGTIME(TAIRCRAFT7%SEG )) -ALLOCATE(TAIRCRAFT7%SEGLAT (TAIRCRAFT7%SEG+1)) -ALLOCATE(TAIRCRAFT7%SEGLON (TAIRCRAFT7%SEG+1)) +ALLOCATE(TAIRCRAFTS(7)%SEGTIME(TAIRCRAFTS(7)%SEG )) +ALLOCATE(TAIRCRAFTS(7)%SEGLAT (TAIRCRAFTS(7)%SEG+1)) +ALLOCATE(TAIRCRAFTS(7)%SEGLON (TAIRCRAFTS(7)%SEG+1)) ! !* duration of the segments (seconds) ! -TAIRCRAFT7%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& +TAIRCRAFTS(7)%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& @@ -1378,7 +1411,7 @@ TAIRCRAFT7%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& !* latitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT7%SEGLAT = (/44.39766, 44.39865, 44.40084, 44.39968, 44.40132,& +TAIRCRAFTS(7)%SEGLAT = (/44.39766, 44.39865, 44.40084, 44.39968, 44.40132,& 44.39968, 44.39728, 44.39430, 44.38775, 44.37997,& 44.37950, 44.37838, 44.37529, 44.37039, 44.36210,& 44.35464, 44.35734, 44.37871, 44.39900, 44.41864,& @@ -1424,7 +1457,7 @@ TAIRCRAFT7%SEGLAT = (/44.39766, 44.39865, 44.40084, 44.39968, 44.40132,& !* longitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT7%SEGLON = (/0.76309, 0.76243, 0.74626, 0.71975, 0.69001,& +TAIRCRAFTS(7)%SEGLON = (/0.76309, 0.76243, 0.74626, 0.71975, 0.69001,& 0.65673, 0.62503, 0.59412, 0.56233, 0.53107,& 0.49721, 0.46349, 0.42894, 0.39615, 0.36775,& 0.33793, 0.31306, 0.29383, 0.27389, 0.25332,& @@ -1470,9 +1503,9 @@ TAIRCRAFT7%SEGLON = (/0.76309, 0.76243, 0.74626, 0.71975, 0.69001,& !* pressure of the segments ends (1st point is takeoff, last point is landing) ! (pascals) ! -IF (TAIRCRAFT7%ALTDEF) THEN - ALLOCATE(TAIRCRAFT7%SEGP (TAIRCRAFT7%SEG+1)) -TAIRCRAFT7%SEGP = 100. * (/1013.5,1012.2, 999.9, 993.1, 992.3,& +IF (TAIRCRAFTS(7)%ALTDEF) THEN + ALLOCATE(TAIRCRAFTS(7)%SEGP (TAIRCRAFTS(7)%SEG+1)) +TAIRCRAFTS(7)%SEGP = 100. * (/1013.5,1012.2, 999.9, 993.1, 992.3,& 994.3, 995.5, 996.0, 994.8, 995.3,& 996.3, 997.7, 997.7, 994.8, 988.4,& 993.4, 999.0, 999.4, 999.8,1000.0,& @@ -1515,8 +1548,8 @@ TAIRCRAFT7%SEGP = 100. * (/1013.5,1012.2, 999.9, 993.1, 992.3,& 993.5, 994.8, 995.2, 999.8,1012.4,& 1012.4,1012.4,1012.4 /) ELSE - ALLOCATE(TAIRCRAFT7%SEGZ (TAIRCRAFT7%SEG+1)) - TAIRCRAFT7%SEGZ = (/8000,8000,8000,8000,8000,& + ALLOCATE(TAIRCRAFTS(7)%SEGZ (TAIRCRAFTS(7)%SEG+1)) + TAIRCRAFTS(7)%SEGZ = (/8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& @@ -1560,57 +1593,60 @@ TAIRCRAFT7%SEGP = 100. * (/1013.5,1012.2, 999.9, 993.1, 992.3,& 8000,8000,8000/) ENDIF ! +IF ( NAIRCRAFTS < 8 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! -! -! !* 1. Aircraft number 8 ! ----------------- ! +#if 0 !* model number ! -TAIRCRAFT8%NMODEL = 0 +TAIRCRAFTS(8)%NMODEL = 0 ! !* model switch ! -TAIRCRAFT8%MODEL = 'FIX' +TAIRCRAFTS(8)%MODEL = 'FIX' ! !* aircraft type ! -TAIRCRAFT8%TYPE = 'AIRCRA' +TAIRCRAFTS(8)%TYPE = 'AIRCRA' !* aircraft flight name ! -TAIRCRAFT8%TITLE = 'DIMO22B' +TAIRCRAFTS(8)%TITLE = 'DIMO22B' ! !* time step for storage ! -TAIRCRAFT8%TFLYER_TIME%XTSTEP = 60. +TAIRCRAFTS(8)%TFLYER_TIME%XTSTEP = 60. ! !* take-off date and time ! -TAIRCRAFT8%LAUNCH%nyear = 2007 -TAIRCRAFT8%LAUNCH%nmonth = 04 -TAIRCRAFT8%LAUNCH%nday = 22 -TAIRCRAFT8%LAUNCH%xtime = 45720. +TAIRCRAFTS(8)%LAUNCH%nyear = 2007 +TAIRCRAFTS(8)%LAUNCH%nmonth = 04 +TAIRCRAFTS(8)%LAUNCH%nday = 22 +TAIRCRAFTS(8)%LAUNCH%xtime = 45720. ! !* number of flight segments ! -TAIRCRAFT8%SEG = 210 +TAIRCRAFTS(8)%SEG = 210 ! !* initalisation of flag for pressure (T) or Z(F) for aicraft altitude ! -TAIRCRAFT8%ALTDEF = .TRUE. +TAIRCRAFTS(8)%ALTDEF = .TRUE. ! !* allocation of the arrays ! -ALLOCATE(TAIRCRAFT8%SEGTIME(TAIRCRAFT8%SEG )) -ALLOCATE(TAIRCRAFT8%SEGLAT (TAIRCRAFT8%SEG+1)) -ALLOCATE(TAIRCRAFT8%SEGLON (TAIRCRAFT8%SEG+1)) +ALLOCATE(TAIRCRAFTS(8)%SEGTIME(TAIRCRAFTS(8)%SEG )) +ALLOCATE(TAIRCRAFTS(8)%SEGLAT (TAIRCRAFTS(8)%SEG+1)) +ALLOCATE(TAIRCRAFTS(8)%SEGLON (TAIRCRAFTS(8)%SEG+1)) ! !* duration of the segments (seconds) ! -TAIRCRAFT8%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& +TAIRCRAFTS(8)%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& @@ -1649,7 +1685,7 @@ TAIRCRAFT8%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& !* latitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT8%SEGLAT = (/ 44.40018, 44.39977, 44.39868, 44.39992, 44.39773,& +TAIRCRAFTS(8)%SEGLAT = (/ 44.40018, 44.39977, 44.39868, 44.39992, 44.39773,& 44.39547, 44.38932, 44.38114, 44.37649, 44.37682,& 44.37604, 44.37314, 44.36610, 44.35869, 44.35126,& 44.36888, 44.38902, 44.41019, 44.43016, 44.44711,& @@ -1697,7 +1733,7 @@ TAIRCRAFT8%SEGLAT = (/ 44.40018, 44.39977, 44.39868, 44.39992, 44.39773,& !* longitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT8%SEGLON = (/ 0.75057, 0.72578, 0.69760, 0.66704, 0.63457,& +TAIRCRAFTS(8)%SEGLON = (/ 0.75057, 0.72578, 0.69760, 0.66704, 0.63457,& 0.60222, 0.56878, 0.53642, 0.50398, 0.47225,& 0.43953, 0.40789, 0.38031, 0.35008, 0.32169,& 0.30147, 0.28060, 0.26058, 0.23973, 0.21616,& @@ -1745,9 +1781,9 @@ TAIRCRAFT8%SEGLON = (/ 0.75057, 0.72578, 0.69760, 0.66704, 0.63457,& !* pressure of the segments ends (1st point is takeoff, last point is landing) ! (pascals) ! -IF (TAIRCRAFT8%ALTDEF) THEN - ALLOCATE(TAIRCRAFT8%SEGP (TAIRCRAFT8%SEG+1)) -TAIRCRAFT8%SEGP = 100. * (/1002.7, 994.1, 993.0, 994.6, 994.2,& +IF (TAIRCRAFTS(8)%ALTDEF) THEN + ALLOCATE(TAIRCRAFTS(8)%SEGP (TAIRCRAFTS(8)%SEG+1)) +TAIRCRAFTS(8)%SEGP = 100. * (/1002.7, 994.1, 993.0, 994.6, 994.2,& 994.3, 995.3, 996.2, 997.4, 996.8,& 997.5, 996.0, 989.7, 990.8, 996.2,& 999.0, 997.8, 998.4, 999.0, 999.8,& @@ -1791,8 +1827,8 @@ TAIRCRAFT8%SEGP = 100. * (/1002.7, 994.1, 993.0, 994.6, 994.2,& 995.1, 995.0, 986.7, 992.4,1009.3,& 1010.1 /) ELSE - ALLOCATE(TAIRCRAFT8%SEGZ (TAIRCRAFT8%SEG+1)) - TAIRCRAFT8%SEGZ = (/8000,8000,8000,8000,8000,& + ALLOCATE(TAIRCRAFTS(8)%SEGZ (TAIRCRAFTS(8)%SEG+1)) + TAIRCRAFTS(8)%SEGZ = (/8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& @@ -1837,54 +1873,59 @@ TAIRCRAFT8%SEGP = 100. * (/1002.7, 994.1, 993.0, 994.6, 994.2,& 8000/) ENDIF ! +IF ( NAIRCRAFTS < 9 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) +#endif ! !* 1. Aircraft number 9 ! ----------------- ! +#if 0 !* model number ! -TAIRCRAFT9%NMODEL = 0 +TAIRCRAFTS(9)%NMODEL = 0 ! !* model switch ! -TAIRCRAFT9%MODEL = 'FIX' +TAIRCRAFTS(9)%MODEL = 'FIX' ! !* aircraft type ! -TAIRCRAFT9%TYPE = 'AIRCRA' +TAIRCRAFTS(9)%TYPE = 'AIRCRA' !* aircraft flight name ! -TAIRCRAFT9%TITLE = 'DIMO23A' +TAIRCRAFTS(9)%TITLE = 'DIMO23A' ! !* time step for storage ! -TAIRCRAFT9%TFLYER_TIME%XTSTEP = 60. +TAIRCRAFTS(9)%TFLYER_TIME%XTSTEP = 60. ! !* take-off date and time ! -TAIRCRAFT9%LAUNCH%nyear = 2007 -TAIRCRAFT9%LAUNCH%nmonth = 04 -TAIRCRAFT9%LAUNCH%nday = 23 -TAIRCRAFT9%LAUNCH%xtime = 28080. +TAIRCRAFTS(9)%LAUNCH%nyear = 2007 +TAIRCRAFTS(9)%LAUNCH%nmonth = 04 +TAIRCRAFTS(9)%LAUNCH%nday = 23 +TAIRCRAFTS(9)%LAUNCH%xtime = 28080. ! !* number of flight segments ! -TAIRCRAFT9%SEG = 217 +TAIRCRAFTS(9)%SEG = 217 ! !* initalisation of flag for pressure (T) or Z(F) for aicraft altitude ! -TAIRCRAFT9%ALTDEF = .TRUE. +TAIRCRAFTS(9)%ALTDEF = .TRUE. ! !* allocation of the arrays ! -ALLOCATE(TAIRCRAFT9%SEGTIME(TAIRCRAFT9%SEG )) -ALLOCATE(TAIRCRAFT9%SEGLAT (TAIRCRAFT9%SEG+1)) -ALLOCATE(TAIRCRAFT9%SEGLON (TAIRCRAFT9%SEG+1)) +ALLOCATE(TAIRCRAFTS(9)%SEGTIME(TAIRCRAFTS(9)%SEG )) +ALLOCATE(TAIRCRAFTS(9)%SEGLAT (TAIRCRAFTS(9)%SEG+1)) +ALLOCATE(TAIRCRAFTS(9)%SEGLON (TAIRCRAFTS(9)%SEG+1)) ! !* duration of the segments (seconds) ! -TAIRCRAFT9%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& +TAIRCRAFTS(9)%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& 60, 60, 60, 60, 60, 60,& @@ -1926,7 +1967,7 @@ TAIRCRAFT9%SEGTIME = (/ 60, 60, 60, 60, 60, 60,& !* latitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT9%SEGLAT = (/ 44.39751, 44.39753, 44.39752, 44.39853, 44.40034,& +TAIRCRAFTS(9)%SEGLAT = (/ 44.39751, 44.39753, 44.39752, 44.39853, 44.40034,& 44.39319, 44.38918, 44.39412, 44.40370, 44.40138,& 44.39750, 44.39613, 44.39272, 44.38845, 44.38440,& 44.38014, 44.37677, 44.37483, 44.36861, 44.35633,& @@ -1976,7 +2017,7 @@ TAIRCRAFT9%SEGLAT = (/ 44.39751, 44.39753, 44.39752, 44.39853, 44.40034,& !* longitudes of the segments ends (1st point is takeoff, last point is landing) ! (decimal degrees) ! -TAIRCRAFT9%SEGLON = (/ 0.76306, 0.76307, 0.76305, 0.76269, 0.74580,& +TAIRCRAFTS(9)%SEGLON = (/ 0.76306, 0.76307, 0.76305, 0.76269, 0.74580,& 0.74072, 0.76103, 0.77639, 0.75449, 0.71425,& 0.68316, 0.65249, 0.61874, 0.58328, 0.55006,& 0.51760, 0.48441, 0.45139, 0.42065, 0.39305,& @@ -2026,9 +2067,9 @@ TAIRCRAFT9%SEGLON = (/ 0.76306, 0.76307, 0.76305, 0.76269, 0.74580,& ! (pascals) ! -IF (TAIRCRAFT9%ALTDEF) THEN - ALLOCATE(TAIRCRAFT9%SEGP (TAIRCRAFT9%SEG+1)) -TAIRCRAFT9%SEGP = 100. * (/ 1014.8,1014.8,1014.8,1014.8,1005.5,& +IF (TAIRCRAFTS(9)%ALTDEF) THEN + ALLOCATE(TAIRCRAFTS(9)%SEGP (TAIRCRAFTS(9)%SEG+1)) +TAIRCRAFTS(9)%SEGP = 100. * (/ 1014.8,1014.8,1014.8,1014.8,1005.5,& 987.8, 972.7, 959.2, 957.2, 978.1,& 993.8, 993.5, 992.9, 995.5, 997.4,& 997.7, 998.5, 998.3, 996.8, 997.7,& @@ -2073,8 +2114,8 @@ TAIRCRAFT9%SEGP = 100. * (/ 1014.8,1014.8,1014.8,1014.8,1005.5,& 965.9, 985.1,1003.1,1013.9,1013.9,& 1013.9,1013.9,1013.9 /) ELSE - ALLOCATE(TAIRCRAFT9%SEGZ (TAIRCRAFT9%SEG+1)) - TAIRCRAFT9%SEGZ = (/8000,8000,8000,8000,8000,& + ALLOCATE(TAIRCRAFTS(9)%SEGZ (TAIRCRAFTS(9)%SEG+1)) + TAIRCRAFTS(9)%SEGZ = (/8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& 8000,8000,8000,8000,8000,& @@ -2119,6 +2160,9 @@ TAIRCRAFT9%SEGP = 100. * (/ 1014.8,1014.8,1014.8,1014.8,1005.5,& 8000,8000,8000,8000,8000,& 8000,8000,8000/) ENDIF +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) +#endif ! !---------------------------------------------------------------------------- ! diff --git a/src/MNH/ini_aircraft_balloon.f90 b/src/MNH/ini_aircraft_balloon.f90 index 996ff864d02dcd4377c45622680511f5cf74d0a6..5a9c1b141ece4ba15fc04b63ceccac648dd2fa09 100644 --- a/src/MNH/ini_aircraft_balloon.f90 +++ b/src/MNH/ini_aircraft_balloon.f90 @@ -128,6 +128,7 @@ INTEGER :: IMI ! current model index INTEGER :: ISTORE ! number of storage instants INTEGER :: ILUOUT ! logical unit INTEGER :: IRESP ! return code +INTEGER :: JI INTEGER :: JSEG ! loop counter TYPE(TFIELDMETADATA) :: TZFIELD ! @@ -161,15 +162,9 @@ END IF ! ---------------------- IF (IMI == 1) CALL INI_BALLOON ! -CALL INI_LAUNCH(1,TBALLOON1) -CALL INI_LAUNCH(2,TBALLOON2) -CALL INI_LAUNCH(3,TBALLOON3) -CALL INI_LAUNCH(4,TBALLOON4) -CALL INI_LAUNCH(5,TBALLOON5) -CALL INI_LAUNCH(6,TBALLOON6) -CALL INI_LAUNCH(7,TBALLOON7) -CALL INI_LAUNCH(8,TBALLOON8) -CALL INI_LAUNCH(9,TBALLOON9) +DO JI = 1, NBALLOONS + CALL INI_LAUNCH( JI, TBALLOONS(JI) ) +END DO ! !---------------------------------------------------------------------------- ! @@ -178,36 +173,9 @@ CALL INI_LAUNCH(9,TBALLOON9) ! IF (IMI == 1) CALL INI_AIRCRAFT ! -CALL INI_FLIGHT(1,TAIRCRAFT1) -CALL INI_FLIGHT(2,TAIRCRAFT2) -CALL INI_FLIGHT(3,TAIRCRAFT3) -CALL INI_FLIGHT(4,TAIRCRAFT4) -CALL INI_FLIGHT(5,TAIRCRAFT5) -CALL INI_FLIGHT(6,TAIRCRAFT6) -CALL INI_FLIGHT(7,TAIRCRAFT7) -CALL INI_FLIGHT(8,TAIRCRAFT8) -CALL INI_FLIGHT(9,TAIRCRAFT9) -CALL INI_FLIGHT(10,TAIRCRAFT10) -CALL INI_FLIGHT(11,TAIRCRAFT11) -CALL INI_FLIGHT(12,TAIRCRAFT12) -CALL INI_FLIGHT(13,TAIRCRAFT13) -CALL INI_FLIGHT(14,TAIRCRAFT14) -CALL INI_FLIGHT(15,TAIRCRAFT15) -CALL INI_FLIGHT(16,TAIRCRAFT16) -CALL INI_FLIGHT(17,TAIRCRAFT17) -CALL INI_FLIGHT(18,TAIRCRAFT18) -CALL INI_FLIGHT(19,TAIRCRAFT19) -CALL INI_FLIGHT(20,TAIRCRAFT20) -CALL INI_FLIGHT(21,TAIRCRAFT21) -CALL INI_FLIGHT(22,TAIRCRAFT22) -CALL INI_FLIGHT(23,TAIRCRAFT23) -CALL INI_FLIGHT(24,TAIRCRAFT24) -CALL INI_FLIGHT(25,TAIRCRAFT25) -CALL INI_FLIGHT(26,TAIRCRAFT26) -CALL INI_FLIGHT(27,TAIRCRAFT27) -CALL INI_FLIGHT(28,TAIRCRAFT28) -CALL INI_FLIGHT(29,TAIRCRAFT29) -CALL INI_FLIGHT(30,TAIRCRAFT30) +DO JI = 1, NAIRCRAFTS + CALL INI_FLIGHT( JI, TAIRCRAFTS(JI) ) +END DO ! !---------------------------------------------------------------------------- ! @@ -216,46 +184,13 @@ CALL INI_FLIGHT(30,TAIRCRAFT30) ! IF (.NOT. LFLYER) RETURN ! -CALL ALLOCATE_FLYER(TBALLOON1) -CALL ALLOCATE_FLYER(TBALLOON2) -CALL ALLOCATE_FLYER(TBALLOON3) -CALL ALLOCATE_FLYER(TBALLOON4) -CALL ALLOCATE_FLYER(TBALLOON5) -CALL ALLOCATE_FLYER(TBALLOON6) -CALL ALLOCATE_FLYER(TBALLOON7) -CALL ALLOCATE_FLYER(TBALLOON8) -CALL ALLOCATE_FLYER(TBALLOON9) -! -CALL ALLOCATE_FLYER(TAIRCRAFT1) -CALL ALLOCATE_FLYER(TAIRCRAFT2) -CALL ALLOCATE_FLYER(TAIRCRAFT3) -CALL ALLOCATE_FLYER(TAIRCRAFT4) -CALL ALLOCATE_FLYER(TAIRCRAFT5) -CALL ALLOCATE_FLYER(TAIRCRAFT6) -CALL ALLOCATE_FLYER(TAIRCRAFT7) -CALL ALLOCATE_FLYER(TAIRCRAFT8) -CALL ALLOCATE_FLYER(TAIRCRAFT9) -CALL ALLOCATE_FLYER(TAIRCRAFT10) -CALL ALLOCATE_FLYER(TAIRCRAFT11) -CALL ALLOCATE_FLYER(TAIRCRAFT12) -CALL ALLOCATE_FLYER(TAIRCRAFT13) -CALL ALLOCATE_FLYER(TAIRCRAFT14) -CALL ALLOCATE_FLYER(TAIRCRAFT15) -CALL ALLOCATE_FLYER(TAIRCRAFT16) -CALL ALLOCATE_FLYER(TAIRCRAFT17) -CALL ALLOCATE_FLYER(TAIRCRAFT18) -CALL ALLOCATE_FLYER(TAIRCRAFT19) -CALL ALLOCATE_FLYER(TAIRCRAFT20) -CALL ALLOCATE_FLYER(TAIRCRAFT21) -CALL ALLOCATE_FLYER(TAIRCRAFT22) -CALL ALLOCATE_FLYER(TAIRCRAFT23) -CALL ALLOCATE_FLYER(TAIRCRAFT24) -CALL ALLOCATE_FLYER(TAIRCRAFT25) -CALL ALLOCATE_FLYER(TAIRCRAFT26) -CALL ALLOCATE_FLYER(TAIRCRAFT27) -CALL ALLOCATE_FLYER(TAIRCRAFT28) -CALL ALLOCATE_FLYER(TAIRCRAFT29) -CALL ALLOCATE_FLYER(TAIRCRAFT30) +DO JI = 1, NBALLOONS + CALL ALLOCATE_FLYER( TBALLOONS(JI) ) +END DO +! +DO JI = 1, NAIRCRAFTS + CALL ALLOCATE_FLYER( TAIRCRAFTS(JI) ) +END DO ! !---------------------------------------------------------------------------- !---------------------------------------------------------------------------- @@ -402,7 +337,7 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL ' ) CALL IO_Field_read(TPINIFILE,TZFIELD,ZLAT,IRESP) ! IF ( IRESP /= 0 ) THEN - WRITE(ILUOUT,*) "INI_LAUCH: Initial location take for ",TPFLYER%TITLE + WRITE(ILUOUT,*) "INI_LAUNCH: Initial location take for ",TPFLYER%TITLE ELSE TZFIELD = TFIELDMETADATA( & CMNHNAME = TRIM(TPFLYER%TITLE)//'LON', & @@ -463,7 +398,7 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL ' ) TPFLYER%X_CUR, TPFLYER%Y_CUR ) TPFLYER%FLY = .TRUE. WRITE(ILUOUT,*) & - "INI_LAUCH: Current location read in FM file for ",TPFLYER%TITLE + "INI_LAUNCH: Current location read in FM file for ",TPFLYER%TITLE IF (TPFLYER%TYPE== 'CVBALL') THEN WRITE(ILUOUT,*) & " Lat=",ZLAT," Lon=",ZLON," Alt=",TPFLYER%Z_CUR," Wasc=",TPFLYER%WASCENT @@ -488,7 +423,7 @@ ELSE IF (CPROGRAM == 'DIAG ' ) THEN TPFLYER%X_CUR, TPFLYER%Y_CUR ) TPFLYER%FLY = .TRUE. WRITE(ILUOUT,*) & - "INI_LAUCH: Current location read in MODD_DIAG_FLAG for ",TPFLYER%TITLE + "INI_LAUNCH: Current location read in MODD_DIAG_FLAG for ",TPFLYER%TITLE WRITE(ILUOUT,*) & " Lat=",ZLAT," Lon=",ZLON," Alt=",TPFLYER%Z_CUR END IF diff --git a/src/MNH/ini_balloon.f90 b/src/MNH/ini_balloon.f90 index 5c0095d21dc107f1a880d9e6f032778db5d1b61a..68da885538e29dfce2426459adf5d72281789f83 100644 --- a/src/MNH/ini_balloon.f90 +++ b/src/MNH/ini_balloon.f90 @@ -93,7 +93,7 @@ !! ------------- !! Original 15/05/2000 !! Apr,19, 2001 (G.Jaubert) add CVBALL type and switch in models -!! +! P. Wautelet 06/2022: reorganize flyers !! -------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -101,8 +101,9 @@ ! USE MODD_AIRCRAFT_BALLOON USE MODD_CST -! -! + +USE MODE_MSG + IMPLICIT NONE ! ! @@ -113,393 +114,430 @@ IMPLICIT NONE ! ! 0.2 declaration of local variables ! -! +INTEGER :: JI !---------------------------------------------------------------------------- +NBALLOONS = 0 + +ALLOCATE( TBALLOONS(NBALLOONS) ) + +IF ( NBALLOONS < 1 ) RETURN ! !* 1. Balloon number 1 ! ---------------- +#if 0 ! !* model number ! -TBALLOON1%NMODEL = 0 -TBALLOON1%MODEL = 'MOB' +TBALLOONS(1)%NMODEL = 0 +TBALLOONS(1)%MODEL = 'MOB' ! !* balloon type ! -TBALLOON1%TYPE = 'CVBALL' +TBALLOONS(1)%TYPE = 'CVBALL' ! !* balloon name ! -TBALLOON1%TITLE = 'CVB1MOBI' +TBALLOONS(1)%TITLE = 'CVB1MOBI' ! !* launching date and time ! -TBALLOON1%LAUNCH%nyear = 1999 -TBALLOON1%LAUNCH%nmonth = 09 -TBALLOON1%LAUNCH%nday = 19 -TBALLOON1%LAUNCH%xtime = 32460. +TBALLOONS(1)%LAUNCH%nyear = 1999 +TBALLOONS(1)%LAUNCH%nmonth = 09 +TBALLOONS(1)%LAUNCH%nday = 19 +TBALLOONS(1)%LAUNCH%xtime = 32460. ! !* latitude and longitude of launching site (decimal degree) ! -TBALLOON1%LAT = 45.800 -TBALLOON1%LON = 8.629 +TBALLOONS(1)%LAT = 45.800 +TBALLOONS(1)%LON = 8.629 ! !* altitude of the launching site for 'RADIOS' !* altitude or pressure of the flight level for 'ISODEN' ! -!TBALLOON1%ALT = 3959. -TBALLOON1%PRES = 98450. +!TBALLOONS(1)%ALT = 3959. +TBALLOONS(1)%PRES = 98450. ! !* time step for data storage (s) ! -TBALLOON1%TFLYER_TIME%XTSTEP = 20. +TBALLOONS(1)%TFLYER_TIME%XTSTEP = 20. ! !* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS') ! -TBALLOON1%WASCENT = 0. +TBALLOONS(1)%WASCENT = 0. ! !* aerodynamic drag coefficient of the balloon (for 'CVBALL') !* induced drag coefficient (i.e. air shifted by the balloon) (for 'CVBALL') !* volume of the balloon (m3) (for 'CVBALL') !* mass of the balloon (kg) (for 'CVBALL') ! -TBALLOON1%AERODRAG = 0.44 -TBALLOON1%INDDRAG = 0.014 -TBALLOON1%VOLUME = 3.040 -TBALLOON1%MASS = 2.4516 -TBALLOON1%DIAMETER = ((3.*TBALLOON1%VOLUME)/(4.*XPI))**(1./3.) +TBALLOONS(1)%AERODRAG = 0.44 +TBALLOONS(1)%INDDRAG = 0.014 +TBALLOONS(1)%VOLUME = 3.040 +TBALLOONS(1)%MASS = 2.4516 +TBALLOONS(1)%DIAMETER = ((3.*TBALLOONS(1)%VOLUME)/(4.*XPI))**(1./3.) ! +IF ( NBALLOONS < 2 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', 'balloon characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 2. Balloon number 2 ! ---------------- +#if 0 ! !* model number ! -TBALLOON2%NMODEL = 0 -TBALLOON2%MODEL = 'MOB' +TBALLOONS(2)%NMODEL = 0 +TBALLOONS(2)%MODEL = 'MOB' ! !* balloon type ! -TBALLOON2%TYPE = 'CVBALL' +TBALLOONS(2)%TYPE = 'CVBALL' ! !* balloon name ! -TBALLOON2%TITLE = 'CVB2MOBI' +TBALLOONS(2)%TITLE = 'CVB2MOBI' ! !* launching date and time ! -TBALLOON2%LAUNCH%nyear = 1999 -TBALLOON2%LAUNCH%nmonth = 09 -TBALLOON2%LAUNCH%nday = 19 -TBALLOON2%LAUNCH%xtime = 39660. +TBALLOONS(2)%LAUNCH%nyear = 1999 +TBALLOONS(2)%LAUNCH%nmonth = 09 +TBALLOONS(2)%LAUNCH%nday = 19 +TBALLOONS(2)%LAUNCH%xtime = 39660. ! !* latitude and longitude of launching site (decimal degree) ! -TBALLOON2%LAT = 45.800 -TBALLOON2%LON = 8.630 +TBALLOONS(2)%LAT = 45.800 +TBALLOONS(2)%LON = 8.630 ! !* altitude of the launching site for 'RADIOS' !* altitude or pressure of the flight level for 'ISODEN' ! -!TBALLOON2%ALT = 3959. -TBALLOON2%PRES = 98490. +!TBALLOONS(2)%ALT = 3959. +TBALLOONS(2)%PRES = 98490. ! !* time step for data storage (s) ! -TBALLOON2%TFLYER_TIME%XTSTEP = 20. +TBALLOONS(2)%TFLYER_TIME%XTSTEP = 20. ! !* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS') ! -TBALLOON2%WASCENT = 0. +TBALLOONS(2)%WASCENT = 0. ! !* aerodynamic drag coefficient of the balloon (for 'CVBALL') !* induced drag coefficient (i.e. air shifted by the balloon) (for 'CVBALL') !* volume of the balloon (m3) (for 'CVBALL') !* mass of the balloon (kg) (for 'CVBALL') ! -TBALLOON2%AERODRAG = 0.44 -TBALLOON2%INDDRAG = 0.014 -TBALLOON2%VOLUME = 3.040 -TBALLOON2%MASS = 2.58087 -TBALLOON2%DIAMETER = ((3.*TBALLOON2%VOLUME)/(4.*XPI))**(1./3.) +TBALLOONS(2)%AERODRAG = 0.44 +TBALLOONS(2)%INDDRAG = 0.014 +TBALLOONS(2)%VOLUME = 3.040 +TBALLOONS(2)%MASS = 2.58087 +TBALLOONS(2)%DIAMETER = ((3.*TBALLOONS(2)%VOLUME)/(4.*XPI))**(1./3.) ! -!------------------------------------------------------------------------------- +IF ( NBALLOONS < 3 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', 'balloon characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 3. Balloon number 3 ! ---------------- +#if 0 ! !* model number ! -TBALLOON3%NMODEL = 0 -TBALLOON3%MODEL = 'MOB' +TBALLOONS(3)%NMODEL = 0 +TBALLOONS(3)%MODEL = 'MOB' ! !* balloon type ! -TBALLOON3%TYPE = 'RADIOS' +TBALLOONS(3)%TYPE = 'RADIOS' ! !* balloon name ! -TBALLOON3%TITLE = 'RSMASE19' +TBALLOONS(3)%TITLE = 'RSMASE19' ! !* launching date and time ! -TBALLOON3%LAUNCH%nyear = 1999 -TBALLOON3%LAUNCH%nmonth = 09 -TBALLOON3%LAUNCH%nday = 19 -TBALLOON3%LAUNCH%xtime = 68400. +TBALLOONS(3)%LAUNCH%nyear = 1999 +TBALLOONS(3)%LAUNCH%nmonth = 09 +TBALLOONS(3)%LAUNCH%nday = 19 +TBALLOONS(3)%LAUNCH%xtime = 68400. ! !* latitude and longitude of launching site (decimal degree) ! -TBALLOON3%LAT = 46.810 -TBALLOON3%LON = 9.39 +TBALLOONS(3)%LAT = 46.810 +TBALLOONS(3)%LON = 9.39 ! !* altitude of the launching site for 'RADIOS' !* altitude or pressure of the flight level for 'ISODEN' ! -TBALLOON3%ALT = 865. -!TBALLOON3%PRES = 62360. +TBALLOONS(3)%ALT = 865. +!TBALLOONS(3)%PRES = 62360. ! !* time step for data storage (s) ! -TBALLOON3%TFLYER_TIME%XTSTEP = 20. +TBALLOONS(3)%TFLYER_TIME%XTSTEP = 20. ! !* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS') ! -TBALLOON3%WASCENT = 4.85 +TBALLOONS(3)%WASCENT = 4.85 ! !* aerodynamic drag coefficient of the balloon (for 'CVBALL') !* induced drag coefficient (i.e. air shifted by the balloon) (for 'CVBALL') !* volume of the balloon (m3) (for 'CVBALL') !* mass of the balloon (kg) (for 'CVBALL') ! -TBALLOON3%AERODRAG = 0.44 -TBALLOON3%INDDRAG = 0.014 -TBALLOON3%VOLUME = 3.040 -TBALLOON3%MASS = 2.4516 -TBALLOON3%DIAMETER = ((3.*TBALLOON3%VOLUME)/(4.*XPI))**(1./3.) -! +TBALLOONS(3)%AERODRAG = 0.44 +TBALLOONS(3)%INDDRAG = 0.014 +TBALLOONS(3)%VOLUME = 3.040 +TBALLOONS(3)%MASS = 2.4516 +TBALLOONS(3)%DIAMETER = ((3.*TBALLOONS(3)%VOLUME)/(4.*XPI))**(1./3.) ! +IF ( NBALLOONS < 4 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', 'balloon characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 4. Balloon number 4 ! ---------------- +#if 0 ! !* model number ! -TBALLOON4%NMODEL = 0 -TBALLOON4%MODEL = 'FIX' +TBALLOONS(4)%NMODEL = 0 +TBALLOONS(4)%MODEL = 'FIX' ! !* balloon type ! -TBALLOON4%TYPE = 'CVBALL' +TBALLOONS(4)%TYPE = 'CVBALL' ! !* balloon name ! -TBALLOON4%TITLE = 'CVB1ACVB' +TBALLOONS(4)%TITLE = 'CVB1ACVB' ! !* launching date and time ! -TBALLOON4%LAUNCH%nyear = 1999 -TBALLOON4%LAUNCH%nmonth = 09 -TBALLOON4%LAUNCH%nday = 19 -TBALLOON4%LAUNCH%xtime = 32460. +TBALLOONS(4)%LAUNCH%nyear = 1999 +TBALLOONS(4)%LAUNCH%nmonth = 09 +TBALLOONS(4)%LAUNCH%nday = 19 +TBALLOONS(4)%LAUNCH%xtime = 32460. ! !* latitude and longitude of launching site (decimal degree) ! -TBALLOON4%LAT = 45.922 -TBALLOON4%LON = 8.646 +TBALLOONS(4)%LAT = 45.922 +TBALLOONS(4)%LON = 8.646 ! !* altitude of the launching site for 'RADIOS' !* altitude or pressure of the flight level for 'ISODEN' ! -TBALLOON4%ALT = 3959. -!TBALLOON4%PRES = 62360. +TBALLOONS(4)%ALT = 3959. +!TBALLOONS(4)%PRES = 62360. ! !* time step for data storage (s) ! -TBALLOON4%TFLYER_TIME%XTSTEP = 20. +TBALLOONS(4)%TFLYER_TIME%XTSTEP = 20. ! !* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS') ! -!TBALLOON4%WASCENT = 2.55 +!TBALLOONS(4)%WASCENT = 2.55 ! !* aerodynamic drag coefficient of the balloon (for 'CVBALL') !* induced drag coefficient (i.e. air shifted by the balloon) (for 'CVBALL') !* volume of the balloon (m3) (for 'CVBALL') !* mass of the balloon (kg) (for 'CVBALL') ! -TBALLOON4%AERODRAG = 0.44 -TBALLOON4%INDDRAG = 0.014 -TBALLOON4%VOLUME = 3.040 -TBALLOON4%MASS = 2.4516 -TBALLOON4%DIAMETER = ((3.*TBALLOON4%VOLUME)/(4.*XPI))**(1./3.) +TBALLOONS(4)%AERODRAG = 0.44 +TBALLOONS(4)%INDDRAG = 0.014 +TBALLOONS(4)%VOLUME = 3.040 +TBALLOONS(4)%MASS = 2.4516 +TBALLOONS(4)%DIAMETER = ((3.*TBALLOONS(4)%VOLUME)/(4.*XPI))**(1./3.) ! +IF ( NBALLOONS < 5 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', 'balloon characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 5. Balloon number 5 ! ---------------- +#if 0 ! !* model number ! -TBALLOON5%NMODEL = 0 -TBALLOON5%MODEL = 'FIX' +TBALLOONS(5)%NMODEL = 0 +TBALLOONS(5)%MODEL = 'FIX' ! !* balloon type ! -TBALLOON5%TYPE = 'CVBALL' +TBALLOONS(5)%TYPE = 'CVBALL' ! !* balloon name ! -TBALLOON5%TITLE = 'CVB1DEPA' +TBALLOONS(5)%TITLE = 'CVB1DEPA' ! !* launching date and time ! -TBALLOON5%LAUNCH%nyear = 1999 -TBALLOON5%LAUNCH%nmonth = 09 -TBALLOON5%LAUNCH%nday = 19 -TBALLOON5%LAUNCH%xtime = 32435. +TBALLOONS(5)%LAUNCH%nyear = 1999 +TBALLOONS(5)%LAUNCH%nmonth = 09 +TBALLOONS(5)%LAUNCH%nday = 19 +TBALLOONS(5)%LAUNCH%xtime = 32435. ! !* latitude and longitude of launching site (decimal degree) ! -TBALLOON5%LAT = 45.800 -TBALLOON5%LON = 8.630 +TBALLOONS(5)%LAT = 45.800 +TBALLOONS(5)%LON = 8.630 ! !* altitude of the launching site for 'RADIOS' !* altitude or pressure of the flight level for 'ISODEN' ! -TBALLOON5%ALT = 340. -!TBALLOON5%PRES = 62360. +TBALLOONS(5)%ALT = 340. +!TBALLOONS(5)%PRES = 62360. ! !* time step for data storage (s) ! -TBALLOON5%TFLYER_TIME%XTSTEP = 20. +TBALLOONS(5)%TFLYER_TIME%XTSTEP = 20. ! !* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS') ! -!TBALLOON5%WASCENT = 2.55 +!TBALLOONS(5)%WASCENT = 2.55 ! !* aerodynamic drag coefficient of the balloon (for 'CVBALL') !* induced drag coefficient (i.e. air shifted by the balloon) (for 'CVBALL') !* volume of the balloon (m3) (for 'CVBALL') !* mass of the balloon (kg) (for 'CVBALL') ! -TBALLOON5%AERODRAG = 0.44 -TBALLOON5%INDDRAG = 0.014 -TBALLOON5%VOLUME = 3.040 -TBALLOON5%MASS = 2.4516 -TBALLOON5%DIAMETER = ((3.*TBALLOON5%VOLUME)/(4.*XPI))**(1./3.) +TBALLOONS(5)%AERODRAG = 0.44 +TBALLOONS(5)%INDDRAG = 0.014 +TBALLOONS(5)%VOLUME = 3.040 +TBALLOONS(5)%MASS = 2.4516 +TBALLOONS(5)%DIAMETER = ((3.*TBALLOONS(5)%VOLUME)/(4.*XPI))**(1./3.) ! +IF ( NBALLOONS < 6 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', 'balloon characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 6. Balloon number 6 ! ---------------- +#if 0 ! !* model number ! -TBALLOON6%NMODEL = 0 -TBALLOON6%MODEL = 'FIX' +TBALLOONS(6)%NMODEL = 0 +TBALLOONS(6)%MODEL = 'FIX' ! !* balloon type ! -TBALLOON6%TYPE = 'CVBALL' +TBALLOONS(6)%TYPE = 'CVBALL' ! !* balloon name ! -TBALLOON6%TITLE = 'CVB1RCVB' +TBALLOONS(6)%TITLE = 'CVB1RCVB' ! !* launching date and time ! -TBALLOON6%LAUNCH%nyear = 1999 -TBALLOON6%LAUNCH%nmonth = 09 -TBALLOON6%LAUNCH%nday = 19 -TBALLOON6%LAUNCH%xtime = 32460. +TBALLOONS(6)%LAUNCH%nyear = 1999 +TBALLOONS(6)%LAUNCH%nmonth = 09 +TBALLOONS(6)%LAUNCH%nday = 19 +TBALLOONS(6)%LAUNCH%xtime = 32460. ! !* latitude and longitude of launching site (decimal degree) ! -TBALLOON6%LAT = 45.922 -TBALLOON6%LON = 8.646 +TBALLOONS(6)%LAT = 45.922 +TBALLOONS(6)%LON = 8.646 ! !* altitude of the launching site for 'RADIOS' !* altitude or pressure of the flight level for 'ISODEN' ! -!TBALLOON6%ALT = 3959. -!TBALLOON6%PRES = 62360. +!TBALLOONS(6)%ALT = 3959. +!TBALLOONS(6)%PRES = 62360. ! !* time step for data storage (s) ! -TBALLOON6%TFLYER_TIME%XTSTEP = 20. +TBALLOONS(6)%TFLYER_TIME%XTSTEP = 20. ! !* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS') ! -!TBALLOON6%WASCENT = 2.55 +!TBALLOONS(6)%WASCENT = 2.55 ! !* aerodynamic drag coefficient of the balloon (for 'CVBALL') !* induced drag coefficient (i.e. air shifted by the balloon) (for 'CVBALL') !* volume of the balloon (m3) (for 'CVBALL') !* mass of the balloon (kg) (for 'CVBALL') ! -TBALLOON6%AERODRAG = 0.44 -TBALLOON6%INDDRAG = 0.014 -TBALLOON6%VOLUME = 3.040 -TBALLOON6%MASS = 2.4516 -TBALLOON6%DIAMETER = ((3.*TBALLOON6%VOLUME)/(4.*XPI))**(1./3.) +TBALLOONS(6)%AERODRAG = 0.44 +TBALLOONS(6)%INDDRAG = 0.014 +TBALLOONS(6)%VOLUME = 3.040 +TBALLOONS(6)%MASS = 2.4516 +TBALLOONS(6)%DIAMETER = ((3.*TBALLOONS(6)%VOLUME)/(4.*XPI))**(1./3.) ! +IF ( NBALLOONS < 7 ) RETURN +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', 'balloon characteristics are commented' ) +#endif !---------------------------------------------------------------------------- ! !* 7. Balloon number 7 ! ---------------- +#if 0 ! !* model number ! -TBALLOON7%NMODEL = 0 -TBALLOON7%MODEL = 'FIX' +TBALLOONS(7)%NMODEL = 0 +TBALLOONS(7)%MODEL = 'FIX' ! !* balloon type ! -TBALLOON7%TYPE = 'CVBALL' +TBALLOONS(7)%TYPE = 'CVBALL' ! !* balloon name ! -TBALLOON7%TITLE = 'CVB1PISO' +TBALLOONS(7)%TITLE = 'CVB1PISO' ! !* launching date and time ! -TBALLOON7%LAUNCH%nyear = 1999 -TBALLOON7%LAUNCH%nmonth = 09 -TBALLOON7%LAUNCH%nday = 19 -TBALLOON7%LAUNCH%xtime = 32460. +TBALLOONS(7)%LAUNCH%nyear = 1999 +TBALLOONS(7)%LAUNCH%nmonth = 09 +TBALLOONS(7)%LAUNCH%nday = 19 +TBALLOONS(7)%LAUNCH%xtime = 32460. ! !* latitude and longitude of launching site (decimal degree) ! -TBALLOON7%LAT = 45.922 -TBALLOON7%LON = 8.646 +TBALLOONS(7)%LAT = 45.922 +TBALLOONS(7)%LON = 8.646 ! !* altitude of the launching site for 'RADIOS' !* altitude or pressure of the flight level for 'ISODEN' ! -!TBALLOON7%ALT = 3959. -TBALLOON7%PRES = 62360. +!TBALLOONS(7)%ALT = 3959. +TBALLOONS(7)%PRES = 62360. ! !* time step for data storage (s) ! -TBALLOON7%TFLYER_TIME%XTSTEP = 20. +TBALLOONS(7)%TFLYER_TIME%XTSTEP = 20. ! !* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS') ! -!TBALLOON7%WASCENT = 2.55 +!TBALLOONS(7)%WASCENT = 2.55 ! !* aerodynamic drag coefficient of the balloon (for 'CVBALL') !* induced drag coefficient (i.e. air shifted by the balloon) (for 'CVBALL') !* volume of the balloon (m3) (for 'CVBALL') !* mass of the balloon (kg) (for 'CVBALL') ! -TBALLOON7%AERODRAG = 0.44 -TBALLOON7%INDDRAG = 0.014 -TBALLOON7%VOLUME = 3.040 -TBALLOON7%MASS = 2.4516 -TBALLOON7%DIAMETER = ((3.*TBALLOON7%VOLUME)/(4.*XPI))**(1./3.) +TBALLOONS(7)%AERODRAG = 0.44 +TBALLOONS(7)%INDDRAG = 0.014 +TBALLOONS(7)%VOLUME = 3.040 +TBALLOONS(7)%MASS = 2.4516 +TBALLOONS(7)%DIAMETER = ((3.*TBALLOONS(7)%VOLUME)/(4.*XPI))**(1./3.) +#else +CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', 'balloon characteristics are commented' ) +#endif ! !---------------------------------------------------------------------------- ! diff --git a/src/MNH/modd_aircraft_balloon.f90 b/src/MNH/modd_aircraft_balloon.f90 index ea5b7e418e3fd51ca153dd9dc75b3114fb36c169..54d38ad12998be8cf58fb3315cda1c34b3d7b142 100644 --- a/src/MNH/modd_aircraft_balloon.f90 +++ b/src/MNH/modd_aircraft_balloon.f90 @@ -47,6 +47,8 @@ use modd_type_date, only: date_time implicit none +save + !------------------------------------------------------------------------------------------- ! LOGICAL :: LFLYER ! flag to use aircraft/balloons @@ -158,45 +160,11 @@ TYPE, EXTENDS( TFLYERDATA ) :: TBALLOONDATA REAL :: MASS = XUNDEF ! mass of the balloon (kg) (if 'CVBALL') END TYPE TBALLOONDATA -TYPE(TBALLOONDATA) :: TBALLOON1 ! characteristics and records of a balloon -TYPE(TBALLOONDATA) :: TBALLOON2 ! characteristics and records of a balloon -TYPE(TBALLOONDATA) :: TBALLOON3 ! characteristics and records of a balloon -TYPE(TBALLOONDATA) :: TBALLOON4 ! characteristics and records of a balloon -TYPE(TBALLOONDATA) :: TBALLOON5 ! characteristics and records of a balloon -TYPE(TBALLOONDATA) :: TBALLOON6 ! characteristics and records of a balloon -TYPE(TBALLOONDATA) :: TBALLOON7 ! characteristics and records of a balloon -TYPE(TBALLOONDATA) :: TBALLOON8 ! characteristics and records of a balloon -TYPE(TBALLOONDATA) :: TBALLOON9 ! characteristics and records of a balloon +INTEGER :: NAIRCRAFTS = 0 ! Total number of aircrafts +INTEGER :: NBALLOONS = 0 ! Total number of balloons + +TYPE(TAIRCRAFTDATA), DIMENSION(:), ALLOCATABLE :: TAIRCRAFTS ! characteristics and records of the aircrafts -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT1 ! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT2 ! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT3 ! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT4 ! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT5 ! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT6 ! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT7 ! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT8 ! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT9 ! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT10! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT11! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT12! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT13! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT14! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT15! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT16! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT17! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT18! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT19! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT20! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT21! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT22! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT23! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT24! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT25! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT26! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT27! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT28! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT29! characteristics and records of an aircraft -TYPE(TAIRCRAFTDATA) :: TAIRCRAFT30! characteristics and records of an aircraft +TYPE(TBALLOONDATA), DIMENSION(:), ALLOCATABLE :: TBALLOONS ! characteristics and records of the balloons END MODULE MODD_AIRCRAFT_BALLOON diff --git a/src/MNH/write_aircraft_balloon.f90 b/src/MNH/write_aircraft_balloon.f90 index 4bf6970fad8abb1d9af7d27f704b6bf7ea1445d8..82040c7ea02f8aada67964369bb6fbe198771696 100644 --- a/src/MNH/write_aircraft_balloon.f90 +++ b/src/MNH/write_aircraft_balloon.f90 @@ -105,51 +105,19 @@ TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write ! 0.2 declaration of local variables ! INTEGER :: IMI ! current model index +INTEGER :: JI ! !---------------------------------------------------------------------------- ! IMI=GET_CURRENT_MODEL_INDEX() ! -CALL FLYER_DIACHRO(TBALLOON1) -CALL FLYER_DIACHRO(TBALLOON2) -CALL FLYER_DIACHRO(TBALLOON3) -CALL FLYER_DIACHRO(TBALLOON4) -CALL FLYER_DIACHRO(TBALLOON5) -CALL FLYER_DIACHRO(TBALLOON6) -CALL FLYER_DIACHRO(TBALLOON7) -CALL FLYER_DIACHRO(TBALLOON8) -CALL FLYER_DIACHRO(TBALLOON9) -! -CALL FLYER_DIACHRO(TAIRCRAFT1) -CALL FLYER_DIACHRO(TAIRCRAFT2) -CALL FLYER_DIACHRO(TAIRCRAFT3) -CALL FLYER_DIACHRO(TAIRCRAFT4) -CALL FLYER_DIACHRO(TAIRCRAFT5) -CALL FLYER_DIACHRO(TAIRCRAFT6) -CALL FLYER_DIACHRO(TAIRCRAFT7) -CALL FLYER_DIACHRO(TAIRCRAFT8) -CALL FLYER_DIACHRO(TAIRCRAFT9) -CALL FLYER_DIACHRO(TAIRCRAFT10) -CALL FLYER_DIACHRO(TAIRCRAFT11) -CALL FLYER_DIACHRO(TAIRCRAFT12) -CALL FLYER_DIACHRO(TAIRCRAFT13) -CALL FLYER_DIACHRO(TAIRCRAFT14) -CALL FLYER_DIACHRO(TAIRCRAFT15) -CALL FLYER_DIACHRO(TAIRCRAFT16) -CALL FLYER_DIACHRO(TAIRCRAFT17) -CALL FLYER_DIACHRO(TAIRCRAFT18) -CALL FLYER_DIACHRO(TAIRCRAFT19) -CALL FLYER_DIACHRO(TAIRCRAFT20) -CALL FLYER_DIACHRO(TAIRCRAFT21) -CALL FLYER_DIACHRO(TAIRCRAFT22) -CALL FLYER_DIACHRO(TAIRCRAFT23) -CALL FLYER_DIACHRO(TAIRCRAFT24) -CALL FLYER_DIACHRO(TAIRCRAFT25) -CALL FLYER_DIACHRO(TAIRCRAFT26) -CALL FLYER_DIACHRO(TAIRCRAFT27) -CALL FLYER_DIACHRO(TAIRCRAFT28) -CALL FLYER_DIACHRO(TAIRCRAFT29) -CALL FLYER_DIACHRO(TAIRCRAFT30) +DO JI = 1, NBALLOONS + CALL FLYER_DIACHRO( TBALLOONS(JI) ) +END DO + +DO JI = 1, NAIRCRAFTS + CALL FLYER_DIACHRO( TAIRCRAFTS(JI) ) +END DO ! !---------------------------------------------------------------------------- !---------------------------------------------------------------------------- diff --git a/src/MNH/write_balloonn.f90 b/src/MNH/write_balloonn.f90 index 8332daba12f5939cbb245920feba12917a27e1d1..54a7bbcb6726a8e47a2d3e0bf090e02bf2b1356a 100644 --- a/src/MNH/write_balloonn.f90 +++ b/src/MNH/write_balloonn.f90 @@ -80,15 +80,11 @@ TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File characteristics !* 0.2 Declarations of local variables ! ! -IF (TBALLOON1%FLY) CALL WRITE_LFI_BALLOON(TBALLOON1) -IF (TBALLOON2%FLY) CALL WRITE_LFI_BALLOON(TBALLOON2) -IF (TBALLOON3%FLY) CALL WRITE_LFI_BALLOON(TBALLOON3) -IF (TBALLOON4%FLY) CALL WRITE_LFI_BALLOON(TBALLOON4) -IF (TBALLOON5%FLY) CALL WRITE_LFI_BALLOON(TBALLOON5) -IF (TBALLOON6%FLY) CALL WRITE_LFI_BALLOON(TBALLOON6) -IF (TBALLOON7%FLY) CALL WRITE_LFI_BALLOON(TBALLOON7) -IF (TBALLOON8%FLY) CALL WRITE_LFI_BALLOON(TBALLOON8) -IF (TBALLOON9%FLY) CALL WRITE_LFI_BALLOON(TBALLOON9) +INTEGER :: JI + +DO JI = 1, NBALLOONS + IF ( TBALLOONS(JI)%FLY ) CALL WRITE_LFI_BALLOON( TBALLOONS(JI) ) +END DO ! ! CONTAINS