SUBROUTINE SUAFN2

!**** *SUAFN2*  - INITIALIZE ARPEGE FIELD DESCRIPTORS : 
!                 CONCATENATE INDIVIDUAL TYPES INTO A SINGLE TYPE ARRAY

!     PURPOSE.
!     --------

!**   INTERFACE.
!     ----------
!       *CALL* *SUAFN2*

!        EXPLICIT ARGUMENTS
!        --------------------
!        NONE

!        IMPLICIT ARGUMENTS
!        --------------------
!        See #include below.

!     METHOD.
!     -------
!        See documentation about FULL-POS.

!     EXTERNALS.
!     ----------
!      No external.
!      Called by SUAFN.

!     REFERENCE.
!     ----------
!        ECMWF Research Department documentation of the IFS

!     AUTHOR.
!     -------
!        K. YESSAD and J. NICOLAU
!        after routine SUAFN of RYAD EL KHATIB *METEO-FRANCE*

!     MODIFICATIONS.
!     --------------
!        ORIGINAL : 97-09-03
!        Modified by K. YESSAD and R. EL KHAT0B (97-10-21):
!         - add NH and ISBA fields already introduced in AL07.
!        R. El Khatib : 98-04-06 simplifications
!        D. Giard     : 99-03-15 superficial frozen water
!        J.M. Piriou  : 99-04-19 Moon radiation.
!        D.Dent       : 99-05-06 budget values   
!        J. Teixeira  : 99-03-26  surface tiling
!        D. Paradis   : 99-07-27 Introduce NB0TPG and NBITCS use
!        R. El Khatib : 00-03-22 Support for new phys. fields
!        D.Dent       : 00-01-10 correct entry for NGRBBV 
!        A.Beljaars   : 00-03-06 3D extra fields to GRIB code 099-114
!        R. El Khatib : 00-08-18 derived type for dynamic fields
!        D. Dent      : 00-04-12 Introduce Montgomery geopotential
!                                and pressure on THETA and PV surfaces
!        D. Giard     : 00-10-25 Albedos for bare ground and vegetation
!        R. El Khatib : 01-05-04 Duration of total precipitations, HUn, HUx
!        R. El Khatib : 01-08-04 Montgomery potential on theta surfaces only
!        R. El Khatib : 01-08-07 Pruning options
!        R. El Khatib : 02-21-20 Fpos B-level distribution + remove IO scheme
!        F. Vana      : 02-07-03 Virtual potential temperature
!        R. El Khatib : 02-09-04 Iso -10 Celsius
!        D. Dent      : 02-05-15 Extend extra field options
!        JJMorcrette  : 02-10-29 PAR, UVB, CAPE
!        R. El Khatib : 03-04-17 Fullpos improvemnts
!        M.Hamrud     : 03-10-01 CY28 Cleaning
!        F. Taillefer : 04-05-26 Add ozone and aerosols fields
!        Y.Bouteloup  : 04-03-26 Introduction of MTS radiance
!        G. Hello     : 05-01-25 Adding snow, rain,graupel, tke
!        R. Engelen   : 05-03-15 Greenhouse gases (ECMWF)
!        A. Untch     : 05-03-15 Aerosols (ECMWF)
!        J. Flemming  : 05-04-11 Aerosols replaced with GEMS GRG 
!        R. El Ouaraini: 05-07-28 Adding fields for the monitoring of update frequency of the coupling files for Aladin
!        A. Dethof    : 15-Dec-05 Add total column GRG fields
!        A. Alias     : 05-12-21 Add sulfate and volcano aerosols fields
!        M. Bellus    : 28-Sep-2006 Add prognostic convection fields (ALARO-0)
!        S. Serrar    : 05-06-23 CO2 surface fluxes added
!        S. Serrar    : 05-09-26 Add CO2 and SF6 total column
!        R. Engelen   : 02-Jun-06  CO2 replaced by generic GHG
!        JJMorcrette    20060625 MODIS albedo
!        JJMorcrette    20060715 Dust climatological fields
!        JJMorcrette    20060721 PP of clear-sky PAR and TOA incident solar radiation
!        JJMorcrette    20060807 PP of VIMD
!        JJMorcrette    20060925 DU, BC, OM, SO2, VOL, SOA climatological fields
!        G. Balsamo     20070115 Soil type
!        S. Serrar    : 22-03-2007 physics tendencies post-processable as GFL fields for ERA40
!        S. Serrar   20070717 methane variables made post-processable (GEMS)
!        P. Lopez    26-06-2009 Added 100m wind components
!        JJMorcrette 20090217 PP of aerosol and UV-processor outputs
!        P. Lopez    22-10-2008 Added ducting diagnostic fields 
!        JJMorcrette 20091201 Total and clear-sky direct SW radiation flux at surface 
!        H. Hersbach 04-Dec-2009 10-m neutral wind and friction velocity
!        S. Boussetta/G.Balsamo      May 2009   Added variable LAI field
!        R. Forbes   01-Mar-2010 Added TCRW, TCSW diagnostics
!        JJMorcrette 20100212 PP of CBASE, 0DEGL and VISIH 
!        T. Wilhelmsson: 25-Mar-2010 Add 6 hourly min/max fields
!     ------------------------------------------------------------------

USE PARKIND1  ,ONLY : JPIM     ,JPRB
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
USE PARFPOS  , ONLY : JPOSSCVA ,JPOSVX2  ,JPOSFSU  ,JPOSGHG, JPOSGRG, JPOSAERO, &
 & JPOSTRAC, JPOSERA40, JPOSNOGW, JPOSAEROUT, JPOSUVP
USE YOM_YGFL , ONLY : YLRCH4, YCH4S, NGHG
USE YOMAFN
USE YOMCT0   , ONLY : LNHDYN   ,LFPART2
USE FULLPOS_MIX, ONLY : TFP_SU   ,CTRL_TFP
USE TYPE_FPDSPHYS, ONLY : GFP_SU   ,CTRL_GFP
USE YOMLUN   , ONLY : NULOUT

IMPLICIT NONE

INTEGER(KIND=JPIM) :: I, JJ, IMAX
CHARACTER(LEN=2) :: CLW
CHARACTER(LEN=5) :: CLWS
LOGICAL :: LLSF, LL_LRCH4, LL_CH4S
REAL(KIND=JPRB) :: Z0
REAL(KIND=JPRB) :: ZHOOK_HANDLE

#include "abor1.intfb.h"

!     ------------------------------------------------------------------

!        1. Dynamics :

! TFP_*%CLNIL is used to remove some fields from the requests : 
!  - Remove trivial fields (X on X=constant level)
!  - Vertical divergence can be computed only on eta levels
!  - Remove wind-related fields that cannot be computed 
!    after horizontal interpolations (conf. 'Z' or 'E') because 
!    at that time horizontal derivatives are lost
!  - Remove true vertical velocity in the hydrostatic model if it should 
!    be computed after horizontal interpolations (conf. 'Z' or 'E') because
!    at that time horizontal derivatives are lost (in the NH model it works
!    because then the vertical divergence is a pronostic field)
!  - 2D fields should be split in 2 flows : 
!    * those which are surface-dependent (like surface pressure) 
!    cannot be computed within pressure, theta or Pv scans 
!    (conf. 'B', 'T', 'V') because these scans are so that vertical 
!    interpolations take place before the horizontal interpolations ; 
!    * those which are surface-independent (like MSL pressure) or which 
!    are defined with respect to the model (map factor, orography)
!    cannot be computed within height or eta scans (conf. 'Z' or 'E')
!    because these scans are so that various model facilities are lost
!    (spectral fit, derivatives, geometry)
! Remark : in the following configurations, most things are possible :
!  'H' = pp. on height levels in the horizontal model geometry 
!  'S' = pp. on eta    levels in the horizontal model geometry 

IF (LHOOK) CALL DR_HOOK('SUAFN2',0,ZHOOK_HANDLE)

Z0=0.0_JPRB

IF (LNHDYN) THEN
  CLW=' '
  CLWS='BVT'
ELSE
  CLW='ZE'
  CLWS='BVTZE'
ENDIF

LLSF=.NOT.LFPART2

LL_LRCH4 = YLRCH4%LACTIVE
LL_CH4S = YCH4S%LACTIVE

IMAX=SIZE(TFP_DYNDS)
I=0

! Notice : the code is still dependent of the ordering of the following lines :
! - 2D fields should be set after 3D fields
! -U/V of the same pair should be set consecutively
! ... I don t understand completely why.
CALL CTRL_TFP(TFP_U,   I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_V,   I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_KHI, I,'ZE    ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_PSI, I,'ZE    ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_T,   I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_Q,   I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_O3MX,I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_L,   I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_I,   I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_CLF, I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_SN,  I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_RR,  I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_GR,  I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_HL,  I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_TKE, I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_Z,   I,'HZ    ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_WND, I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_HU,  I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_TH,  I,'T     ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_THPW,I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_ETH, I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_IET, I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_SRE, I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_THV, I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_P,   I,'B     ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_PD,  I,'      ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_VD,  I,'BVTHZ ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MG,  I,'BVSHZE',LLSF,TFP_DYNDS,IMAX)
! Prognostic convection fields: provide them only on S levels 
! - maybe pressure, B ? but no postproc coded (apache not adapted)
CALL CTRL_TFP(TFP_DAL,  I,'BVTHZ ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_DOM,  I,'BVTHZ ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_UAL,  I,'BVTHZ ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_UOM,  I,'BVTHZ ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_UEN,  I,'BVTHZ ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_UNEBH,I,'BVTHZ ',LLSF,TFP_DYNDS,IMAX)
!----------------------------------------------------------
DO JJ=1,JPOSGHG
  CALL CTRL_TFP(TFP_GHG(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
DO JJ=1,JPOSTRAC
  CALL CTRL_TFP(TFP_TRAC(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
DO JJ=1,JPOSGRG
  CALL CTRL_TFP(TFP_GRG(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
DO JJ=1,JPOSAERO
  CALL CTRL_TFP(TFP_AERO(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
IF(NGHG > 0 .AND. LL_LRCH4) THEN
  CALL CTRL_TFP(TFP_LRCH4,I,' ',LLSF,TFP_DYNDS,IMAX)
ENDIF
IF(NGHG > 0 .AND. LL_CH4S) THEN
  CALL CTRL_TFP(TFP_CH4S,I,' ',LLSF,TFP_DYNDS,IMAX)
ENDIF
DO JJ=1,JPOSERA40
  CALL CTRL_TFP(TFP_ERA40(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
DO JJ=1,JPOSNOGW
  CALL CTRL_TFP(TFP_NOGW(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
DO JJ=1,JPOSAEROUT
  CALL CTRL_TFP(TFP_AEROUT(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
DO JJ=1,JPOSUVP
  CALL CTRL_TFP(TFP_UVP(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
DO JJ=1,JPOSSCVA
  CALL CTRL_TFP(TFP_GFL(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
DO JJ=1,JPOSVX2
  CALL CTRL_TFP(TFP_FUA(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
CALL CTRL_TFP(TFP_VW,  I, CLW ,LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_PV,  I,'VZE',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_VV,  I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_ETAD,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_STD, I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_SHD, I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_ABS, I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_VOR, I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_DIV, I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_SP,  I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_LNSP,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSL, I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_CUF1,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_CUF2,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_CUF3,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_CUF4,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_CUF5,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_FIS, I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_WWS, I,CLWS ,LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_PJET,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_TCAO,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_PCAO,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_PT0B,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_HT0B,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_PT1B,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_HT1B,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_HTPW,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_GM,  I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_FOL, I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_UCLS,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_VCLS,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_TCLS,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_QCLS,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_RCLS,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_FCLS,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_TX  ,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_TN  ,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_HUX ,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_HUN ,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_CAPE,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_CIEN,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MOCO,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_TWV, I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_UGST,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_VGST,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_FGST,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_HCLP,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_SMC ,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_ASMC,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT7C1,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT7C2,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT8C1,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT8C2,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT8C3,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT8C4,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT8C5,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT8C6,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT8C7,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT8C8,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT9C1,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT9C2,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT9C3,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT9C4,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT9C5,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT9C6,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT9C7,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MSAT9C8,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_GOES11C1,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_GOES11C2,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_GOES11C3,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_GOES11C4,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_GOES12C1,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_GOES12C2,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_GOES12C3,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_GOES12C4,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MTSAT1C1,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MTSAT1C2,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MTSAT1C3,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_MTSAT1C4,I,'ZE ',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_LCL,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_FCL,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_EL,I,'BVT',LLSF,TFP_DYNDS,IMAX)
DO JJ=1,JPOSFSU
  CALL CTRL_TFP(TFP_FSU(JJ),I,' ',LLSF,TFP_DYNDS,IMAX)
ENDDO
CALL CTRL_TFP(TFP_UJET,I,'BVT',LLSF,TFP_DYNDS,IMAX)
CALL CTRL_TFP(TFP_VJET,I,'BVT',LLSF,TFP_DYNDS,IMAX)

IF (I < 1) THEN
  CALL ABOR1('SUAFN2 : INTERNAL ERROR I<1')
ELSEIF (I > IMAX) THEN
  CALL ABOR1('SUAFN2 : TFP_DYNDS TOO SMALL !')
ELSE
  DO JJ=I+1,IMAX
    TFP_DYNDS(JJ)=TFP_SU(.TRUE.,' ',-99999,99,99,-9,.TRUE.,0,Z0,0,' ')
  ENDDO
  DO WHILE (I < IMAX)
    CALL CTRL_TFP(TFP_DYNDS(I+1),I,' ',LLSF,TFP_DYNDS,IMAX)
  ENDDO
ENDIF

!     ------------------------------------------------------------------

!        3. Physical fields, cumulated fluxes, instantaneous fluxes/diagnostics

IMAX=SIZE(GFP_PHYDS)
I=0

CALL CTRL_GFP(I,IMAX,GFP_SDFOR,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CO2NBF,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CO2OF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CO2APF,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CO2FIRE,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CH4AG,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CH4F,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SF6   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_10FG ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_10FG6,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_10U  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_10V  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_100U ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_100V ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ZUST ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_10NU ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_10NV ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_2D   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_2T   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ACOT ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_AL   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ALB  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ALS  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ALSN ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ALUVP,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ALUVD,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ALNIP,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ALNID,GFP_PHYDS)

CALL CTRL_GFP(I,IMAX,GFP_AERDEP,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_AERLTS,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_AERSCC,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_BCBF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_BCFF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_BCGF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_OMBF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_OMFF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_OMGF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SO2L ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SO2H ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SOGF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_VOLC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_VOLE ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SOA  ,GFP_PHYDS)
DO JJ=1,JPOSGRG
  CALL CTRL_GFP(I,IMAX,GFP_GRGFLX(JJ) ,GFP_PHYDS)
ENDDO
DO JJ=1,JPOSTRAC
  CALL CTRL_GFP(I,IMAX,GFP_TRACFLX(JJ) ,GFP_PHYDS)
ENDDO
CALL CTRL_GFP(I,IMAX,GFP_ALV  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ANOR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ARG  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ASN  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_BAAL ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_BLD  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_BLH  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_BSR  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_BV   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CBASE,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCC  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CDSW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CHAR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CI   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CP   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSF  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSSW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CVH  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CVL  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LAIL ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LAIH ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_D2   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_D2MX ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_DPAT ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_DST  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_DSW  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_E    ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_EMIS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ES   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_EWSS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_FDSW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_FSSW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_GFIS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_GWD  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_HCC  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_HV   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_IC   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_IDZ0 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_IE   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_IEWSS,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_INCHN,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_INCHX,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_INCTN,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_INCTX,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_INSSS,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ISOR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ISSHF,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ISTL1,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ISTL2,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ISTL3,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ISTL4,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ITZ0 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_IVEG ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LAI  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LAN  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LCC  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LGWS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LSF  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LSM  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LSP  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LSPF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LSRH ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_LZ0H ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_MCC  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_MGWS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_MN2T ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_MN2T6,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_MSLD ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SP   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_MX2T ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_MX2T6,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_NSSS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_PADOU,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_PADOV,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_PCAAG,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_PCAPG,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_PSRHU,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_PURB ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_PVGMX,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_RDST ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_RDSW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_RO   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SRO  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SSRO ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_RSMIN,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_RSN  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SAB  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SD   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SDOG ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SF   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SFIS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SKT  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SLHF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SLOR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SMLT ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SNDE ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SOTY ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SR   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SRC  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SSHF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SSR  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SSRC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SSRD ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SST  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SSW  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ST   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_UCUR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_VCUR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_STL1 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_STL2 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_STL3 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_STL4 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_STR  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_STRC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_STRD ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SUND ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SWL1 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SWL2 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SWL3 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SWL4 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TCC  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TCO3 ,GFP_PHYDS)
DO JJ=1,JPOSGHG
  CALL CTRL_GFP(I,IMAX,GFP_TCGHG(JJ) ,GFP_PHYDS)
ENDDO
DO JJ=1,JPOSTRAC
  CALL CTRL_GFP(I,IMAX,GFP_TCTRAC(JJ) ,GFP_PHYDS)
ENDDO
DO JJ=1,JPOSGRG
  CALL CTRL_GFP(I,IMAX,GFP_TCGRG(JJ) ,GFP_PHYDS)
ENDDO
CALL CTRL_GFP(I,IMAX,GFP_TCW  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TCWV ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TCLW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TCIW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TCRW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TCSW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TP   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TSN  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TSR  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TSRC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TTR  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TTRC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TVH  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TVL  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_VEG  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_VIMD ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_VISIH,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_Z0F  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_Z0H  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_Z0V  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_0DEGL,GFP_PHYDS)

CALL CTRL_GFP(I,IMAX,GFP_ASEA ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ALAN ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ASOO ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ADES ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_ASUL ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_AVOL ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_O3A  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_O3B  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_O3C  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SPAR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SUVB ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CAPE ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SPARC,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_STINC,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SFDIR,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_SCDIR,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_DNDZN,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_DNDZA,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_DCTB ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TPLB ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_TPLT ,GFP_PHYDS)

DO JJ=1,JPOSVX2
  CALL CTRL_GFP(I,IMAX,GFP_VX2(JJ),GFP_PHYDS)
ENDDO
DO JJ=1,JPOSFSU
  CALL CTRL_GFP(I,IMAX,GFP_FSU(JJ),GFP_PHYDS)
ENDDO

CALL CTRL_GFP(I,IMAX,GFP_CLSP ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCP  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CLSS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CLSG ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CLSH ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCSF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCSG ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCSH ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CUSS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CVSS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSSH ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSLH ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTSP ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTCC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CBLD ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSSR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSTR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTSR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTTR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCCC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CHCC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CMCC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CLCC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CUGW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CVGW ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CE   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CS   ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CLHE ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CLHS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CWS  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSNS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CQTO ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTO3 ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTME ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CICE ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CLI  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCVU ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCVV ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCVQ ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCVS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTUQ ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTUS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSOC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTHC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSOP ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTOP ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSOD ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTHD ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CFON ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CCHS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CEAS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSRU ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CDRU ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CIRU ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CETP ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTP  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CSMR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTSOC,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CTTHC,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_CDUTP,GFP_PHYDS)

CALL CTRL_GFP(I,IMAX,GFP_XTCC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_X10U ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_X10V ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_X2T  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_X2SH ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_X2RH ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCCC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XHCC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XMCC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XLCC ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XX2T ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XN2T ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCVU ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCVV ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCVQ ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCVS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XTUU ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XTUV ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XTUQ ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XTUS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XGDU ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XGDV ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XLSP ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCP  ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XLSS ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XLSG ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XLSH ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCSF ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCSG ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCSH ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XSSR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XSTR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XTSR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XTTR ,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_X10FF,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCAPE,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XMOCO,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XCLPH,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XGUST,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XUGST,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XVGST,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XX2HU,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XN2HU,GFP_PHYDS)
CALL CTRL_GFP(I,IMAX,GFP_XTHW,GFP_PHYDS)


IF (I < 1) THEN
  CALL ABOR1('SUAFN2 : INTERNAL ERROR I<1')
ELSEIF (I > IMAX) THEN
  WRITE(UNIT=NULOUT,FMT='('' I= '',I4,'' IMAX= '',I4)') I, IMAX
  CALL ABOR1('SUAFN2 : GFP_PHYDS TOO SMALL !')
ELSE
  DO JJ=I+1,IMAX
    GFP_PHYDS(JJ)=GFP_SU(-9999,99,-9,0,0,1,.FALSE.,.TRUE.,' ',' ')
  ENDDO
  DO WHILE (I < IMAX)
    CALL CTRL_GFP(I,IMAX,GFP_PHYDS(I+1),GFP_PHYDS)
  ENDDO
ENDIF

IF (LHOOK) CALL DR_HOOK('SUAFN2',1,ZHOOK_HANDLE)

END SUBROUTINE SUAFN2
