diff --git a/src/MNH/aircraft_balloon_evol.f90 b/src/MNH/aircraft_balloon_evol.f90
index d7de3a7c12b41bdb79e4587097344f9c04df0c7c..c79631fa0e07aa38c1e42c2e2c6e3bf70ce27821 100644
--- a/src/MNH/aircraft_balloon_evol.f90
+++ b/src/MNH/aircraft_balloon_evol.f90
@@ -455,7 +455,7 @@ IF ( .NOT. TPFLYER%LFLY ) THEN
         END IF
 
       CLASS DEFAULT
-        CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'AIRCRAFT_BALLOON_EVOL', 'unknown type for TPFLYER' )
+        CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'AIRCRAFT_BALLOON_EVOL', 'unknown type for TPFLYER', OLOCAL = .TRUE. )
 
     END SELECT
 !
@@ -636,7 +636,7 @@ IF ( TPFLYER%LFLY ) THEN
               ZXCOEF = MAX (0.,MIN(ZXCOEF,1.))
               ZYCOEF = (TPFLYER%XY_CUR - ZYHATM(IJ)) / (ZYHATM(IJ+1) - ZYHATM(IJ))
               ZYCOEF = MAX (0.,MIN(ZYCOEF,1.))
-              IF ( TPFLYER%XALTLAUNCH /= XUNDEF ) THEN
+              IF ( TPFLYER%XALTLAUNCH /= XNEGUNDEF ) THEN
                 IK00 = MAX ( COUNT (TPFLYER%XALTLAUNCH >= ZZM(1,1,:)), 1)
                 IK01 = MAX ( COUNT (TPFLYER%XALTLAUNCH >= ZZM(1,2,:)), 1)
                 IK10 = MAX ( COUNT (TPFLYER%XALTLAUNCH >= ZZM(2,1,:)), 1)
@@ -646,7 +646,7 @@ IF ( TPFLYER%LFLY ) THEN
                 ZZCOEF10 = (TPFLYER%XALTLAUNCH - ZZM(2,1,IK10)) / ( ZZM(2,1,IK10+1) - ZZM(2,1,IK10))
                 ZZCOEF11 = (TPFLYER%XALTLAUNCH - ZZM(2,2,IK11)) / ( ZZM(2,2,IK11+1) - ZZM(2,2,IK11))
                 TPFLYER%XRHO = FLYER_INTERP(ZRHO)
-              ELSE IF ( TPFLYER%XPRES /= XUNDEF ) THEN
+              ELSE IF ( TPFLYER%XPRES /= XNEGUNDEF ) THEN
                 ZFLYER_EXN = (TPFLYER%XPRES/XP00)**(XRD/XCPD)
                 IK00 = MAX ( COUNT (ZFLYER_EXN <= ZEXN(1,1,:)), 1)
                 IK01 = MAX ( COUNT (ZFLYER_EXN <= ZEXN(1,2,:)), 1)
@@ -661,7 +661,7 @@ IF ( TPFLYER%LFLY ) THEN
                 CMNHMSG(1) = 'Error in balloon initial position (balloon ' // TRIM(TPFLYER%CTITLE) // ' )'
                 CMNHMSG(2) = 'neither initial ALTITUDE or PRESsure is given'
                 CMNHMSG(3) = 'Check your INI_BALLOON routine'
-                CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'AIRCRAFT_BALLOON_EVOL' )
+                CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'AIRCRAFT_BALLOON_EVOL', OLOCAL = .TRUE. )
               END IF
 !
 !*      5.2.2 Radiosounding balloon
@@ -680,7 +680,7 @@ IF ( TPFLYER%LFLY ) THEN
               ZXCOEF = MAX (0.,MIN(ZXCOEF,1.))
               ZYCOEF = (TPFLYER%XY_CUR - ZYHATM(IJ)) / (ZYHATM(IJ+1) - ZYHATM(IJ))
               ZYCOEF = MAX (0.,MIN(ZYCOEF,1.))
-              IF ( TPFLYER%XALTLAUNCH /= XUNDEF ) THEN
+              IF ( TPFLYER%XALTLAUNCH /= XNEGUNDEF ) THEN
                 IK00 = MAX ( COUNT (TPFLYER%XALTLAUNCH >= ZZM(1,1,:)), 1)
                 IK01 = MAX ( COUNT (TPFLYER%XALTLAUNCH >= ZZM(1,2,:)), 1)
                 IK10 = MAX ( COUNT (TPFLYER%XALTLAUNCH >= ZZM(2,1,:)), 1)
@@ -699,7 +699,7 @@ IF ( TPFLYER%LFLY ) THEN
                   TPFLYER%XRHO = FLYER_INTERP(ZRHO)
                   TPFLYER%XZ_CUR = FLYER_INTERP(ZZM)
                 END IF
-              ELSE IF ( TPFLYER%XPRES /= XUNDEF ) THEN
+              ELSE IF ( TPFLYER%XPRES /= XNEGUNDEF ) THEN
                 ZFLYER_EXN = (TPFLYER%XPRES/XP00)**(XRD/XCPD)
                 IK00 = MAX ( COUNT (ZFLYER_EXN <= ZEXN(1,1,:)), 1)
                 IK01 = MAX ( COUNT (ZFLYER_EXN <= ZEXN(1,2,:)), 1)
diff --git a/src/MNH/ini_balloon.f90 b/src/MNH/ini_balloon.f90
index f9f2d1cd01111003d7c4c30ca52cbd4b0d52c959..886f3f83e61f10dfa0d8caf1dee4c930e66f6191 100644
--- a/src/MNH/ini_balloon.f90
+++ b/src/MNH/ini_balloon.f90
@@ -18,7 +18,7 @@
 !!    ------
 !!    
 !!    For constant volume Balloon, horizontal advection using horizontal wind
-!!        vertical spped of the balloon calculated using the balloon equation
+!!        vertical speed of the balloon calculated using the balloon equation
 !!        (Koffi et AL 2000, JAS vol 57 P.2007-2021)
 !!
 !!   Must be defined (for each balloon):
@@ -93,452 +93,259 @@
 !!    -------------
 !!     Original 15/05/2000
 !!              Apr,19, 2001 (G.Jaubert) add CVBALL type and switch in models
-!  P. Wautelet    06/2022: reorganize flyers
+!  P. Wautelet 13/07/2022: give balloons characteristics in namelist instead of hardcoded
 !! --------------------------------------------------------------------------
-!       
-!*      0. DECLARATIONS
-!          ------------
-!
 USE MODD_AIRCRAFT_BALLOON
-USE MODD_CST
+USE MODD_CONF,             ONLY: NMODEL_NEST => NMODEL
+USE MODD_CST,              ONLY: XPI
+USE MODD_PARAMETERS,       ONLY: XUNDEF
 
 USE MODE_MSG
 
+USE MODN_BALLOONS
+
 IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-!
-!-------------------------------------------------------------------------------
-!
-!       0.2  declaration of local variables
-!
+
 INTEGER :: JI
-!----------------------------------------------------------------------------
-NBALLOONS = 0
 
-ALLOCATE( TBALLOONS(NBALLOONS) )
+ALLOCATE( TBALLOONS (NBALLOONS)  )
+
+!Treat balloon data read in namelist
+DO JI = 1, NBALLOONS
+  IF ( CTITLE(JI) == '' ) THEN
+    WRITE( CTITLE(JI), FMT = '( A, I3.3) ') TRIM( CTYPE(JI) ), JI
+
+    WRITE( CMNHMSG(1), FMT = '( A, I4 )' ) 'no title given to balloon number ', JI
+    CMNHMSG(2) = 'title set to ' // TRIM( CTITLE(JI) )
+    CALL PRINT_MSG( NVERB_INFO, 'GEN', 'INI_BALLOON' )
+  END IF
+  TBALLOONS(JI)%CTITLE = CTITLE(JI)
+
+  IF ( CMODEL(JI) == 'FIX' ) THEN
+    IF ( NMODEL(JI) < 1 .OR. NMODEL(JI) > NMODEL_NEST ) THEN
+      CMNHMSG(1) = 'invalid NMODEL balloon ' // TRIM( CTITLE(JI) )
+      CMNHMSG(2) = 'NMODEL must be between 1 and the last nested model number'
+      CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_BALLOON' )
+      NMODEL(JI) = 1
+    END IF
+  ELSE IF ( CMODEL(JI) == 'MOB' ) THEN
+    IF ( NMODEL(JI) /= 0 .AND. NMODEL(JI) /= 1 ) THEN
+      CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON', &
+                      'NMODEL is set to 1 at start for a CMODEL="MOB" balloon (balloon ' // TRIM( CTITLE(JI) ) // ')' )
+    END IF
+    NMODEL(JI) = 1
+  ELSE
+    CMNHMSG(1) = 'invalid CMODEL (' // TRIM( CMODEL(JI) ) // ') for balloon ' // TRIM( CTITLE(JI) )
+    CMNHMSG(2) = 'CMODEL must be FIX or MOB (default="FIX")'
+    CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_BALLOON' )
+    CMODEL(JI) = 'FIX'
+    NMODEL(JI) = 1
+  END IF
+  TBALLOONS(JI)%CMODEL = CMODEL(JI)
+  TBALLOONS(JI)%NMODEL = NMODEL(JI)
+
+  TBALLOONS(JI)%CTYPE = CTYPE(JI)
+
+  IF ( .NOT. TLAUNCH(JI)%CHECK( TRIM( CTITLE(JI) ) ) ) &
+        CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_BALLOON', &
+                        'problem with TLAUNCH (not set or incorrect values) for balloon ' // TRIM( CTITLE(JI) ) )
+  TBALLOONS(JI)%TLAUNCH  = TLAUNCH(JI)
+
+  IF ( XLATLAUNCH(JI) == XUNDEF ) &
+    CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_BALLOON', 'XLATLAUNCH not provided for balloon ' // TRIM( CTITLE(JI) ) )
+  TBALLOONS(JI)%XLATLAUNCH = XLATLAUNCH(JI)
+
+  IF ( XLONLAUNCH(JI) == XUNDEF ) &
+    CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_BALLOON', 'XLONLAUNCH not provided for balloon ' // TRIM( CTITLE(JI) ) )
+  TBALLOONS(JI)%XLONLAUNCH = XLONLAUNCH(JI)
+
+  IF ( XTSTEP(JI) == XNEGUNDEF ) THEN
+    CALL PRINT_MSG( NVERB_INFO, 'GEN', 'INI_BALLOON', &
+                    'data storage frequency not provided for balloon ' // TRIM( CTITLE(JI) ) // ' => set to 60s' )
+    XTSTEP(JI) = 60.
+  ELSE IF ( XTSTEP(JI) <=0. ) THEN
+    CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_BALLOON', 'invalid data storage frequency for balloon ' // TRIM( CTITLE(JI) ) )
+    XTSTEP(JI) = 60.
+  END IF
+  TBALLOONS(JI)%TFLYER_TIME%XTSTEP = XTSTEP(JI)
+
+  SELECT CASE ( CTYPE(JI) )
+    CASE ( 'CVBALL' )
+      IF ( XALTLAUNCH(JI) == XNEGUNDEF .AND. XPRES(JI) == XNEGUNDEF ) THEN
+        CMNHMSG(1) = 'altitude or pressure at launch not provided for CVBALL balloon ' // TRIM( CTITLE(JI) )
+        CMNHMSG(2) = 'altitude with same air density than balloon will be used for the launch position'
+        CALL PRINT_MSG( NVERB_INFO, 'GEN', 'INI_BALLOON' )
+      END IF
+      IF ( XALTLAUNCH(JI) /= XNEGUNDEF .AND. XPRES(JI) /= XNEGUNDEF ) &
+        CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_BALLOON', &
+                        'altitude or pressure at launch (not both) must be provided for ISODEN balloon ' // TRIM( CTITLE(JI) ) )
+      TBALLOONS(JI)%XALTLAUNCH = XALTLAUNCH(JI)
+      TBALLOONS(JI)%XPRES      = XPRES(JI)
+
+      IF ( XWASCENT(JI) == XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_INFO, 'GEN', 'INI_BALLOON', &
+                        'initial vertical speed not provided for CVBALL balloon ' // TRIM( CTITLE(JI) ) // ' => set to 0.' )
+        XWASCENT(JI) = 0.
+      END IF
+      TBALLOONS(JI)%XWASCENT = XWASCENT(JI)
+
+
+      IF ( XAERODRAG(JI) == XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_INFO, 'GEN', 'INI_BALLOON', &
+                        'aerodynamic drag coefficient not provided for CVBALL balloon ' // TRIM( CTITLE(JI) ) // ' => set to 0.44' )
+        XAERODRAG(JI) = 0.44
+      END IF
+      TBALLOONS(JI)%XAERODRAG = XAERODRAG(JI)
+
+      IF ( XINDDRAG(JI) == XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_INFO, 'GEN', 'INI_BALLOON', &
+                        'induced drag coefficient not provided for CVBALL balloon ' // TRIM( CTITLE(JI) ) // ' => set to 0.014' )
+        XINDDRAG(JI) = 0.014
+      END IF
+      TBALLOONS(JI)%XINDDRAG = XINDDRAG(JI)
+
+      IF ( XMASS(JI) == XNEGUNDEF ) &
+        CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', 'mass not provided for CVBALL balloon ' // TRIM( CTITLE(JI) ) )
+      TBALLOONS(JI)%XMASS = XMASS(JI)
+
+      IF ( XDIAMETER(JI) <= 0. .AND. XVOLUME(JI) <= 0. ) &
+        CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', &
+                        'diameter or volume not provided for CVBALL balloon ' // TRIM( CTITLE(JI) ) )
+
+      IF ( XDIAMETER(JI) <= 0. ) THEN
+        TBALLOONS(JI)%XVOLUME          = XVOLUME(JI)
+        TBALLOONS(JI)%XDIAMETER        = ( (3. * XVOLUME(JI) ) / ( 4. * XPI ) ) ** ( 1. / 3. )
+      ELSE IF ( XVOLUME(JI) <= 0 ) THEN
+        TBALLOONS(JI)%XDIAMETER        = XDIAMETER(JI)
+        TBALLOONS(JI)%XVOLUME          = XPI / 6 * XDIAMETER(JI)**3
+      ELSE
+        CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_BALLOON', &
+                        'diameter or volume (not both) must be provided for CVBALL balloon ' // TRIM( CTITLE(JI) ) )
+      END IF
+
+
+    CASE ( 'ISODEN' )
+      IF ( XALTLAUNCH(JI) == XNEGUNDEF .AND. XPRES(JI) == XNEGUNDEF ) &
+        CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', &
+                        'altitude or pressure at launch must be provided for ISODEN balloon ' // TRIM( CTITLE(JI) ) )
+      IF ( XALTLAUNCH(JI) /= XNEGUNDEF .AND. XPRES(JI) /= XNEGUNDEF ) &
+        CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_BALLOON', &
+                        'altitude or pressure at launch (not both) must be provided for ISODEN balloon ' // TRIM( CTITLE(JI) ) )
+      TBALLOONS(JI)%XALTLAUNCH = XALTLAUNCH(JI)
+      TBALLOONS(JI)%XPRES      = XPRES(JI)
+
+      IF ( XWASCENT(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON', &
+                        'initial vertical speed is not needed for ISODEN balloon ' // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XWASCENT(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XWASCENT = XWASCENT(JI)
+
+
+      IF ( XAERODRAG(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON', &
+                        'aerodynamic drag coefficient is not needed for ISODEN balloon ' // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XAERODRAG(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XAERODRAG = XAERODRAG(JI)
+
+      IF ( XINDDRAG(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON', &
+                        'induced drag coefficient is not needed for ISODEN balloon ' // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XINDDRAG(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XINDDRAG = XINDDRAG(JI)
+
+      IF ( XMASS(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON', &
+                        'mass is not needed for ISODEN balloon ' // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XMASS(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XMASS = XMASS(JI)
+
+      IF ( XDIAMETER(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON', &
+                        'diameter is not needed for ISODEN balloon ' // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XDIAMETER(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XDIAMETER = XDIAMETER(JI)
+
+      IF ( XVOLUME(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON', &
+                        'volume is not needed for ISODEN balloon ' // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XVOLUME(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XVOLUME = XVOLUME(JI)
+
+
+    CASE ( 'RADIOS' )
+      IF ( XALTLAUNCH(JI) == XNEGUNDEF ) &
+        CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', &
+                        'altitude of launch must be provided for radiosounding balloon ' // TRIM( CTITLE(JI) ) )
+      TBALLOONS(JI)%XALTLAUNCH = XALTLAUNCH(JI)
+
+      IF ( XWASCENT(JI) == XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_INFO, 'GEN', 'INI_BALLOON', &
+                        'initial vertical speed not provided for balloon ' // TRIM( CTITLE(JI) ) // ' => set to 5.' )
+        XWASCENT(JI) = 5.
+      END IF
+      TBALLOONS(JI)%XWASCENT = XWASCENT(JI)
+
+      IF ( XPRES(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON',                        &
+                        'initial pressure is not needed for radiosounding balloon ' &
+                        // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XPRES(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XAERODRAG = XAERODRAG(JI)
+
+      IF ( XAERODRAG(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON',                                    &
+                        'aerodynamic drag coefficient is not needed for radiosounding balloon ' &
+                        // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XAERODRAG(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XAERODRAG = XAERODRAG(JI)
+
+      IF ( XINDDRAG(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON',                                &
+                        'induced drag coefficient is not needed for radiosounding balloon ' &
+                        // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XINDDRAG(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XINDDRAG = XINDDRAG(JI)
+
+      IF ( XMASS(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON', &
+                        'mass is not needed for radiosounding balloon ' // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XMASS(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XMASS = XMASS(JI)
+
+      IF ( XDIAMETER(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON', &
+                        'diameter is not needed for radiosounding balloon ' // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XDIAMETER(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XDIAMETER = XDIAMETER(JI)
+
+      IF ( XVOLUME(JI) /= XNEGUNDEF ) THEN
+        CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_BALLOON', &
+                        'volume is not needed for radiosounding balloon ' // TRIM( CTITLE(JI) ) // ' => ignored' )
+        XVOLUME(JI) = XNEGUNDEF
+      END IF
+      TBALLOONS(JI)%XVOLUME = XVOLUME(JI)
+
+
+    CASE DEFAULT
+      CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', 'invalid balloon type (CTYPE=' &
+                      // TRIM( CTYPE(JI ) ) // ') for balloon ' // TRIM( CTITLE(JI) ) )
+
+  END SELECT
+END DO
+
+CALL BALLOONS_NML_DEALLOCATE()
 
-IF ( NBALLOONS < 1 ) RETURN
-!
-!*      1.   Balloon number 1
-!            ----------------
-#if 0
-!
-!* model number
-!
-TBALLOONS(1)%NMODEL             = 0
-TBALLOONS(1)%CMODEL             = 'MOB'
-!
-!* balloon type
-!
-TBALLOONS(1)%CTYPE               = 'CVBALL'
-!
-!* balloon name
-!
-TBALLOONS(1)%CTITLE              = 'CVB1MOBI'
-!
-!* launching date and time
-!
-TBALLOONS(1)%TLAUNCH%nyear  =  1999
-TBALLOONS(1)%TLAUNCH%nmonth =    09
-TBALLOONS(1)%TLAUNCH%nday   =    19
-TBALLOONS(1)%TLAUNCH%xtime  = 32460.
-!
-!* latitude and longitude of launching site (decimal degree)
-!
-TBALLOONS(1)%XLATLAUNCH                = 45.800
-TBALLOONS(1)%XLONLAUNCH                =  8.629
-!
-!* altitude of the launching site for 'RADIOS'
-!* altitude or pressure of the flight level for 'ISODEN'
-!
-!TBALLOONS(1)%XALTLAUNCH                =   3959.
-TBALLOONS(1)%XPRES               = 98450.
-!
-!* time step for data storage  (s)
-!
-TBALLOONS(1)%TFLYER_TIME%XTSTEP = 20.
-!
-!* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS')
-!
-TBALLOONS(1)%XWASCENT            = 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')
-!
-TBALLOONS(1)%XAERODRAG           = 0.44
-TBALLOONS(1)%XINDDRAG           = 0.014
-TBALLOONS(1)%XVOLUME           = 3.040
-TBALLOONS(1)%XMASS           = 2.4516
-TBALLOONS(1)%XDIAMETER           = ((3.*TBALLOONS(1)%XVOLUME)/(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
-!
-TBALLOONS(2)%NMODEL             = 0
-TBALLOONS(2)%MODEL             = 'MOB'
-!
-!* balloon type
-!
-TBALLOONS(2)%CTYPE               = 'CVBALL'
-!
-!* balloon name
-!
-TBALLOONS(2)%CTITLE              = 'CVB2MOBI'
-!
-!* launching date and time
-!
-TBALLOONS(2)%TLAUNCH%nyear  =  1999
-TBALLOONS(2)%TLAUNCH%nmonth =    09
-TBALLOONS(2)%TLAUNCH%nday   =    19
-TBALLOONS(2)%TLAUNCH%xtime  = 39660.
-!
-!* latitude and longitude of launching site (decimal degree)
-!
-TBALLOONS(2)%XLATLAUNCH                = 45.800
-TBALLOONS(2)%XLONLAUNCH                =  8.630
-!
-!* altitude of the launching site for 'RADIOS'
-!* altitude or pressure of the flight level for 'ISODEN'
-!
-!TBALLOONS(2)%XALTLAUNCH                =   3959.
-TBALLOONS(2)%XPRES               = 98490.
-!
-!* time step for data storage  (s)
-!
-TBALLOONS(2)%TFLYER_TIME%XTSTEP = 20.
-!
-!* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS')
-!
-TBALLOONS(2)%XWASCENT            = 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')
-!
-TBALLOONS(2)%XAERODRAG           = 0.44
-TBALLOONS(2)%XINDDRAG           = 0.014
-TBALLOONS(2)%XVOLUME           = 3.040
-TBALLOONS(2)%XMASS           = 2.58087
-TBALLOONS(2)%XDIAMETER           = ((3.*TBALLOONS(2)%XVOLUME)/(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
-!
-TBALLOONS(3)%NMODEL             = 0
-TBALLOONS(3)%CMODEL             = 'MOB'
-!
-!* balloon type
-!
-TBALLOONS(3)%CTYPE               = 'RADIOS'
-!
-!* balloon name
-!
-TBALLOONS(3)%CTITLE              = 'RSMASE19'
-!
-!* launching date and time
-!
-TBALLOONS(3)%TLAUNCH%nyear  =  1999
-TBALLOONS(3)%TLAUNCH%nmonth =    09
-TBALLOONS(3)%TLAUNCH%nday   =    19
-TBALLOONS(3)%TLAUNCH%xtime  = 68400.
-!
-!* latitude and longitude of launching site (decimal degree)
-!
-TBALLOONS(3)%XLATLAUNCH                = 46.810
-TBALLOONS(3)%XLONLAUNCH                =  9.39
-!
-!* altitude of the launching site for 'RADIOS'
-!* altitude or pressure of the flight level for 'ISODEN'
-!
-TBALLOONS(3)%XALTLAUNCH                =   865.
-!TBALLOONS(3)%XPRES               = 62360.
-!
-!* time step for data storage  (s)
-!
-TBALLOONS(3)%TFLYER_TIME%XTSTEP = 20.
-!
-!* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS')
-!
-TBALLOONS(3)%XWASCENT            = 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')
-!
-TBALLOONS(3)%XAERODRAG           = 0.44
-TBALLOONS(3)%XINDDRAG           = 0.014
-TBALLOONS(3)%XVOLUME           = 3.040
-TBALLOONS(3)%XMASS           = 2.4516
-TBALLOONS(3)%XDIAMETER           = ((3.*TBALLOONS(3)%XVOLUME)/(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
-!
-TBALLOONS(4)%NMODEL             = 0
-TBALLOONS(4)%CMODEL             = 'FIX'
-!
-!* balloon type
-!
-TBALLOONS(4)%CTYPE               = 'CVBALL'
-!
-!* balloon name
-!
-TBALLOONS(4)%CTITLE              = 'CVB1ACVB'
-!
-!* launching date and time
-!
-TBALLOONS(4)%TLAUNCH%nyear  =  1999
-TBALLOONS(4)%TLAUNCH%nmonth =    09
-TBALLOONS(4)%TLAUNCH%nday   =    19
-TBALLOONS(4)%TLAUNCH%xtime  = 32460.
-!
-!* latitude and longitude of launching site (decimal degree)
-!
-TBALLOONS(4)%XLATLAUNCH                = 45.922
-TBALLOONS(4)%XLONLAUNCH                =  8.646
-!
-!* altitude of the launching site for 'RADIOS'
-!* altitude or pressure of the flight level for 'ISODEN'
-!
-TBALLOONS(4)%XALTLAUNCH                =   3959.
-!TBALLOONS(4)%XPRES               = 62360.
-!
-!* time step for data storage  (s)
-!
-TBALLOONS(4)%TFLYER_TIME%XTSTEP = 20.
-!
-!* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS')
-!
-!TBALLOONS(4)%XWASCENT            = 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')
-!
-TBALLOONS(4)%XAERODRAG           = 0.44
-TBALLOONS(4)%XINDDRAG           = 0.014
-TBALLOONS(4)%XVOLUME           = 3.040
-TBALLOONS(4)%XMASS           = 2.4516
-TBALLOONS(4)%XDIAMETER           = ((3.*TBALLOONS(4)%XVOLUME)/(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
-!
-TBALLOONS(5)%NMODEL             = 0
-TBALLOONS(5)%CMODEL             = 'FIX'
-!
-!* balloon type
-!
-TBALLOONS(5)%CTYPE               = 'CVBALL'
-!
-!* balloon name
-!
-TBALLOONS(5)%CTITLE              = 'CVB1DEPA'
-!
-!* launching date and time
-!
-TBALLOONS(5)%TLAUNCH%nyear  =  1999
-TBALLOONS(5)%TLAUNCH%nmonth =    09
-TBALLOONS(5)%TLAUNCH%nday   =    19
-TBALLOONS(5)%TLAUNCH%xtime  = 32435.
-!
-!* latitude and longitude of launching site (decimal degree)
-!
-TBALLOONS(5)%XLATLAUNCH                = 45.800
-TBALLOONS(5)%XLONLAUNCH                =  8.630
-!
-!* altitude of the launching site for 'RADIOS'
-!* altitude or pressure of the flight level for 'ISODEN'
-!
-TBALLOONS(5)%XALTLAUNCH                =    340.
-!TBALLOONS(5)%XPRES               = 62360.
-!
-!* time step for data storage  (s)
-!
-TBALLOONS(5)%TFLYER_TIME%XTSTEP = 20.
-!
-!* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS')
-!
-!TBALLOONS(5)%XWASCENT            = 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')
-!
-TBALLOONS(5)%XAERODRAG           = 0.44
-TBALLOONS(5)%XINDDRAG           = 0.014
-TBALLOONS(5)%XVOLUME           = 3.040
-TBALLOONS(5)%XMASS           = 2.4516
-TBALLOONS(5)%XDIAMETER           = ((3.*TBALLOONS(5)%XVOLUME)/(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
-!
-TBALLOONS(6)%NMODEL             = 0
-TBALLOONS(6)%CMODEL             = 'FIX'
-!
-!* balloon type
-!
-TBALLOONS(6)%CTYPE               = 'CVBALL'
-!
-!* balloon name
-!
-TBALLOONS(6)%CTITLE              = 'CVB1RCVB'
-!
-!* launching date and time
-!
-TBALLOONS(6)%TLAUNCH%nyear  =  1999
-TBALLOONS(6)%TLAUNCH%nmonth =    09
-TBALLOONS(6)%TLAUNCH%nday   =    19
-TBALLOONS(6)%TLAUNCH%xtime  = 32460.
-!
-!* latitude and longitude of launching site (decimal degree)
-!
-TBALLOONS(6)%XLATLAUNCH                = 45.922
-TBALLOONS(6)%XLONLAUNCH                =  8.646
-!
-!* altitude of the launching site for 'RADIOS'
-!* altitude or pressure of the flight level for 'ISODEN'
-!
-!TBALLOONS(6)%XALTLAUNCH                =   3959.
-!TBALLOONS(6)%XPRES               = 62360.
-!
-!* time step for data storage  (s)
-!
-TBALLOONS(6)%TFLYER_TIME%XTSTEP = 20.
-!
-!* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS')
-!
-!TBALLOONS(6)%XWASCENT            = 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')
-!
-TBALLOONS(6)%XAERODRAG           = 0.44
-TBALLOONS(6)%XINDDRAG           = 0.014
-TBALLOONS(6)%XVOLUME           = 3.040
-TBALLOONS(6)%XMASS           = 2.4516
-TBALLOONS(6)%XDIAMETER           = ((3.*TBALLOONS(6)%XVOLUME)/(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
-!
-TBALLOONS(7)%NMODEL             = 0
-TBALLOONS(7)%CMODEL             = 'FIX'
-!
-!* balloon type
-!
-TBALLOONS(7)%CTYPE               = 'CVBALL'
-!
-!* balloon name
-!
-TBALLOONS(7)%CTITLE              = 'CVB1PISO'
-!
-!* launching date and time
-!
-TBALLOONS(7)%TLAUNCH%nyear  =  1999
-TBALLOONS(7)%TLAUNCH%nmonth =    09
-TBALLOONS(7)%TLAUNCH%nday   =    19
-TBALLOONS(7)%TLAUNCH%xtime  = 32460.
-!
-!* latitude and longitude of launching site (decimal degree)
-!
-TBALLOONS(7)%XLATLAUNCH                = 45.922
-TBALLOONS(7)%XLONLAUNCH                =  8.646
-!
-!* altitude of the launching site for 'RADIOS'
-!* altitude or pressure of the flight level for 'ISODEN'
-!
-!TBALLOONS(7)%XALTLAUNCH                =   3959.
-TBALLOONS(7)%XPRES               = 62360.
-!
-!* time step for data storage  (s)
-!
-TBALLOONS(7)%TFLYER_TIME%XTSTEP = 20.
-!
-!* ascentional vertical speed of the ballon (in calm air) (for 'RADIOS')
-!
-!TBALLOONS(7)%XWASCENT            = 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')
-!
-TBALLOONS(7)%XAERODRAG           = 0.44
-TBALLOONS(7)%XINDDRAG           = 0.014
-TBALLOONS(7)%XVOLUME           = 3.040
-TBALLOONS(7)%XMASS           = 2.4516
-TBALLOONS(7)%XDIAMETER           = ((3.*TBALLOONS(7)%XVOLUME)/(4.*XPI))**(1./3.)
-#else
-CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_BALLOON', 'balloon characteristics are commented' )
-#endif
-!
 !----------------------------------------------------------------------------
 !
 END SUBROUTINE INI_BALLOON
diff --git a/src/MNH/modd_aircraft_balloon.f90 b/src/MNH/modd_aircraft_balloon.f90
index a0e6e5070b4e876afb0d8fa135ec1523905c306a..4e71d254d749c1f96434304804dbc4792f3931ca 100644
--- a/src/MNH/modd_aircraft_balloon.f90
+++ b/src/MNH/modd_aircraft_balloon.f90
@@ -41,7 +41,7 @@
 !             ------------
 !
 !
-use modd_parameters,    only: XUNDEF
+use modd_parameters,    only: XNEGUNDEF, XUNDEF
 USE MODD_TYPE_STATPROF, ONLY: TSTATPROFTIME
 use modd_type_date,     only: date_time
 
@@ -78,10 +78,10 @@ TYPE :: TFLYERDATA
   !
   !* current position of the balloon/aircraft
   !
-  REAL :: XX_CUR = XUNDEF ! current x
-  REAL :: XY_CUR = XUNDEF ! current y
-  REAL :: XZ_CUR = XUNDEF ! current z (if 'RADIOS' or 'AIRCRA' and 'ALTDEF' = T)
-  REAL :: XP_CUR = XUNDEF ! current p (if 'AIRCRA' and 'ALTDEF' = F)
+  REAL :: XX_CUR = XNEGUNDEF ! current x
+  REAL :: XY_CUR = XNEGUNDEF ! current y
+  REAL :: XZ_CUR = XNEGUNDEF ! current z (if 'RADIOS' or 'AIRCRA' and 'ALTDEF' = T)
+  REAL :: XP_CUR = XNEGUNDEF ! current p (if 'AIRCRA' and 'ALTDEF' = F)
   !
   !* data records
   !
@@ -150,15 +150,15 @@ TYPE, EXTENDS( TFLYERDATA ) :: TBALLOONDATA
   REAL :: XLONLAUNCH = XUNDEF ! lontitude of launch
   REAL :: XXLAUNCH   = XUNDEF ! X coordinate of launch
   REAL :: XYLAUNCH   = XUNDEF ! Y coordinate of launch
-  REAL :: XALTLAUNCH = XUNDEF ! altitude of launch (if 'RADIOS' or 'ISODEN' or 'CVBALL')
-  REAL :: XWASCENT   = 5.     ! ascent vertical speed, m/s (if 'RADIOS')
-  REAL :: XRHO       = XUNDEF ! density of launch (if 'ISODEN')
-  REAL :: XPRES      = XUNDEF ! pressure of launch (if 'ISODEN')
-  REAL :: XDIAMETER  = XUNDEF ! apparent diameter of the balloon (m) (if 'CVBALL')
-  REAL :: XAERODRAG  = XUNDEF ! aerodynamic drag coefficient of the balloon (if 'CVBALL')
-  REAL :: XINDDRAG   = XUNDEF ! induced drag coefficient (i.e. air shifted by the balloon) (if 'CVBALL')
-  REAL :: XVOLUME    = XUNDEF ! volume of the balloon (m3) (if 'CVBALL')
-  REAL :: XMASS      = XUNDEF ! mass of the balloon (kg) (if 'CVBALL')
+  REAL :: XALTLAUNCH = XNEGUNDEF ! altitude of launch (if 'RADIOS' or 'ISODEN' or 'CVBALL')
+  REAL :: XWASCENT   = XNEGUNDEF ! ascent vertical speed, m/s (constant if 'RADIOS' or variable if 'CVBALL')
+  REAL :: XRHO       = XNEGUNDEF ! density of launch (if 'ISODEN')
+  REAL :: XPRES      = XNEGUNDEF ! pressure of launch (if 'ISODEN' or 'CVBALL')
+  REAL :: XDIAMETER  = XNEGUNDEF ! apparent diameter of the balloon (m) (if 'CVBALL')
+  REAL :: XAERODRAG  = XNEGUNDEF ! aerodynamic drag coefficient of the balloon (if 'CVBALL')
+  REAL :: XINDDRAG   = XNEGUNDEF ! induced drag coefficient (i.e. air shifted by the balloon) (if 'CVBALL')
+  REAL :: XVOLUME    = XNEGUNDEF ! volume of the balloon (m3) (if 'CVBALL')
+  REAL :: XMASS      = XNEGUNDEF ! mass of the balloon (kg) (if 'CVBALL')
 END TYPE TBALLOONDATA
 
 INTEGER :: NAIRCRAFTS = 0 ! Total number of aircrafts
diff --git a/src/MNH/modn_balloons.f90 b/src/MNH/modn_balloons.f90
new file mode 100644
index 0000000000000000000000000000000000000000..f77356c88a006e722ae782e3e8b4330c86238a2a
--- /dev/null
+++ b/src/MNH/modn_balloons.f90
@@ -0,0 +1,93 @@
+!MNH_LIC Copyright 2022-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+! Author: P. Wautelet 13/07/2022
+! Modifications:
+!-----------------------------------------------------------------
+!###################
+MODULE MODN_BALLOONS
+!###################
+!
+! Namelist with the the characteristics of the balloons
+!
+USE MODD_AIRCRAFT_BALLOON
+USE MODD_TYPE_DATE,        ONLY: DATE_TIME
+
+IMPLICIT NONE
+
+!Use separated arrays for the different balloon characteristics
+!Using directly TBALLOONDATA derived types does not work due to compiler bug (GCC at least from 5.5 to 12.1, see GCC bug 106065)
+
+CHARACTER(LEN=3),  DIMENSION(:), ALLOCATABLE :: CMODEL
+INTEGER,           DIMENSION(:), ALLOCATABLE :: NMODEL
+CHARACTER(LEN=6),  DIMENSION(:), ALLOCATABLE :: CTYPE
+CHARACTER(LEN=10), DIMENSION(:), ALLOCATABLE :: CTITLE
+TYPE(DATE_TIME),   DIMENSION(:), ALLOCATABLE :: TLAUNCH
+REAL,              DIMENSION(:), ALLOCATABLE :: XLATLAUNCH
+REAL,              DIMENSION(:), ALLOCATABLE :: XLONLAUNCH
+!Not needed: XXLAUNCH
+!Not needed: XYLAUNCH
+REAL,              DIMENSION(:), ALLOCATABLE :: XALTLAUNCH
+REAL,              DIMENSION(:), ALLOCATABLE :: XTSTEP
+REAL,              DIMENSION(:), ALLOCATABLE :: XWASCENT
+!Not used in NML (computed): REAL,              DIMENSION(:), ALLOCATABLE :: XRHO
+REAL,              DIMENSION(:), ALLOCATABLE :: XPRES
+REAL,              DIMENSION(:), ALLOCATABLE :: XDIAMETER
+REAL,              DIMENSION(:), ALLOCATABLE :: XAERODRAG
+REAL,              DIMENSION(:), ALLOCATABLE :: XINDDRAG
+REAL,              DIMENSION(:), ALLOCATABLE :: XVOLUME
+REAL,              DIMENSION(:), ALLOCATABLE :: XMASS
+
+NAMELIST / NAM_BALLOONS / CMODEL, CTITLE, CTYPE, NMODEL, TLAUNCH,                      &
+                          XLATLAUNCH, XLONLAUNCH, XALTLAUNCH, XTSTEP, XWASCENT, XPRES, &
+                          XDIAMETER, XAERODRAG, XINDDRAG, XVOLUME, XMASS
+
+CONTAINS
+
+SUBROUTINE BALLOONS_NML_ALLOCATE( KBALLOONS )
+  INTEGER, INTENT(IN) :: KBALLOONS
+
+  !Note: the default values are used/checked in ini_balloon => be careful to ensure coherency
+  ALLOCATE( CMODEL (KBALLOONS) ); CMODEL(:)  = 'FIX'
+  ALLOCATE( CTITLE (KBALLOONS) ); CTITLE(:)  = ''
+  ALLOCATE( CTYPE  (KBALLOONS) ); CTYPE(:)   = ''
+  ALLOCATE( NMODEL (KBALLOONS) ); NMODEL(:)  = 0
+  ALLOCATE( TLAUNCH(KBALLOONS) )
+  ALLOCATE( XLATLAUNCH  (KBALLOONS) ); XLATLAUNCH(:) = XUNDEF
+  ALLOCATE( XLONLAUNCH  (KBALLOONS) ); XLONLAUNCH(:) = XUNDEF
+  ALLOCATE( XALTLAUNCH  (KBALLOONS) ); XALTLAUNCH(:) = XNEGUNDEF
+  ALLOCATE( XTSTEP      (KBALLOONS) ); XTSTEP(:)     = XNEGUNDEF
+  ALLOCATE( XWASCENT    (KBALLOONS) ); XWASCENT(:)   = XNEGUNDEF
+  ALLOCATE( XPRES       (KBALLOONS) ); XPRES(:)      = XNEGUNDEF
+  ALLOCATE( XDIAMETER   (KBALLOONS) ); XDIAMETER(:)  = XNEGUNDEF
+  ALLOCATE( XAERODRAG   (KBALLOONS) ); XAERODRAG(:)  = XNEGUNDEF
+  ALLOCATE( XINDDRAG    (KBALLOONS) ); XINDDRAG(:)   = XNEGUNDEF
+  ALLOCATE( XVOLUME     (KBALLOONS) ); XVOLUME(:)    = XNEGUNDEF
+  ALLOCATE( XMASS       (KBALLOONS) ); XMASS(:)      = XNEGUNDEF
+END SUBROUTINE BALLOONS_NML_ALLOCATE
+
+
+SUBROUTINE BALLOONS_NML_DEALLOCATE( )
+  !Deallocate namelist arrays
+  DEALLOCATE( CMODEL     )
+  DEALLOCATE( CTITLE     )
+  DEALLOCATE( CTYPE      )
+  DEALLOCATE( NMODEL     )
+  DEALLOCATE( TLAUNCH    )
+  DEALLOCATE( XLATLAUNCH )
+  DEALLOCATE( XLONLAUNCH )
+  DEALLOCATE( XALTLAUNCH )
+  DEALLOCATE( XTSTEP     )
+  DEALLOCATE( XWASCENT   )
+  DEALLOCATE( XPRES      )
+  DEALLOCATE( XDIAMETER  )
+  DEALLOCATE( XAERODRAG  )
+  DEALLOCATE( XINDDRAG   )
+  DEALLOCATE( XVOLUME    )
+  DEALLOCATE( XMASS      )
+END SUBROUTINE BALLOONS_NML_DEALLOCATE
+
+
+END MODULE MODN_BALLOONS
diff --git a/src/MNH/modn_flyers.f90 b/src/MNH/modn_flyers.f90
new file mode 100644
index 0000000000000000000000000000000000000000..0c8b6e3e2e3fc054affceee3e872dcf618953495
--- /dev/null
+++ b/src/MNH/modn_flyers.f90
@@ -0,0 +1,21 @@
+!MNH_LIC Copyright 2022-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+! Author: P. Wautelet 13/07/2022
+! Modifications:
+!-----------------------------------------------------------------
+!#################
+MODULE MODN_FLYERS
+!#################
+!
+! Namelist to prepare the aircrafts and balloon namelists (dynamic allocation)
+!
+USE MODD_AIRCRAFT_BALLOON, ONLY: NAIRCRAFTS, NBALLOONS
+
+IMPLICIT NONE
+
+NAMELIST / NAM_FLYERS / NAIRCRAFTS, NBALLOONS
+
+END MODULE MODN_FLYERS
diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index 243ed7665f477fca9e6e1fb33c15d122027600f3..a3303a5fead852cc87083e3836346fc343f685ed 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -304,10 +304,12 @@ END MODULE MODI_READ_EXSEG_n
 !  S. Riette   11/05/2021: HighLow cloud
 !  P. Wautelet 27/04/2022: add namelist for profilers
 !  P. Wautelet 24/06/2022: remove check on CSTORAGE_TYPE for restart of ForeFire variables
+!  P. Wautelet 13/07/2022: add namelist for flyers and balloons
 !------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
+USE MODD_AIRCRAFT_BALLOON, ONLY: NAIRCRAFTS, NBALLOONS
 USE MODD_BLOWSNOW
 USE MODD_BUDGET
 USE MODD_CH_AEROSOL
@@ -342,6 +344,7 @@ USE MODI_TEST_NAM_VAR
 USE MODN_2D_FRC
 USE MODN_ADV_n      ! The final filling of these modules for the model n is
 USE MODN_BACKUP
+USE MODN_BALLOONS, ONLY: BALLOONS_NML_ALLOCATE, NAM_BALLOONS
 USE MODN_BLANK_n
 USE MODN_BLOWSNOW
 USE MODN_BLOWSNOW_n
@@ -363,6 +366,7 @@ USE MODN_ELEC
 USE MODN_EOL
 USE MODN_EOL_ADNR
 USE MODN_EOL_ALM
+USE MODN_FLYERS
 #ifdef MNH_FOREFIRE
 USE MODN_FOREFIRE
 #endif
@@ -844,6 +848,14 @@ IF (KMI == 1) THEN
   IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BLOWSNOW)
   CALL POSNAM(ILUSEG,'NAM_VISC',GFOUND,ILUOUT)
   IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_VISC)
+
+  CALL POSNAM(ILUSEG,'NAM_FLYERS',GFOUND,ILUOUT)
+  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FLYERS)
+  IF ( NBALLOONS > 0 ) THEN
+    CALL BALLOONS_NML_ALLOCATE( NBALLOONS )
+    CALL POSNAM(ILUSEG,'NAM_BALLOONS',GFOUND,ILUOUT)
+    IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BALLOONS)
+  END IF
 END IF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/write_desfmn.f90 b/src/MNH/write_desfmn.f90
index c88c912d493c7f6989b3f115d7e49a0a72413078..046b0bd1e2d49fec9ffaa630145e28a3bdcb6a4e 100644
--- a/src/MNH/write_desfmn.f90
+++ b/src/MNH/write_desfmn.f90
@@ -147,6 +147,7 @@ END MODULE MODI_WRITE_DESFM_n
 !!      Modification   F.Auguste      02/2021  add IBM
 !!                     E.Jezequel     02/2021  add stations read from CSV file
 !  P. Wautelet 27/04/2022: add namelist for profilers
+!  P. Wautelet 13/07/2022: add namelist for flyers and balloons
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -163,6 +164,7 @@ USE MODD_STATION_n,  ONLY: LSTATION
 USE MODE_MSG
 !
 USE MODN_BACKUP
+USE MODN_BALLOONS
 USE MODN_CONF
 USE MODN_DYN
 USE MODN_NESTING
@@ -211,6 +213,7 @@ USE MODN_IBM_PARAM_n
 USE MODN_RECYCL_PARAM_n
 USE MODN_PROFILER_n
 USE MODN_STATION_n
+USE MODN_FLYERS
 !
 IMPLICIT NONE
 !
@@ -451,6 +454,8 @@ IF(CELEC /= 'NONE') WRITE(UNIT=ILUSEG,NML=NAM_ELEC)
 IF(LSERIES) WRITE(UNIT=ILUSEG,NML=NAM_SERIES)
 IF(NMODEL_CLOUD/=NUNDEF) WRITE(UNIT=ILUSEG,NML=NAM_TURB_CLOUD)
 IF(CTURB /= 'NONE') WRITE(UNIT=ILUSEG,NML=NAM_TURB)
+WRITE(UNIT=ILUSEG,NML=NAM_FLYERS)
+!Not possible (for the moment): arrays have been deallocated after ini_balloon: WRITE(UNIT=ILUSEG,NML=NAM_BALLOONS)
 !
 !
 !