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