source: LMDZ5/branches/testing/libf/phylmd/rrtm/gfl_subs.F90 @ 1999

Last change on this file since 1999 was 1999, checked in by Laurent Fairhead, 10 years ago

Merged trunk changes r1920:1997 into testing branch

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 27.0 KB
Line 
1MODULE GFL_SUBS
2
3!     Purpose.
4!     --------
5
6!      GFL_SUBS contains routines to do basic manipulatutions of GFL descriptors
7
8!     Author.
9!     -------
10!     Mats Hamrud(ECMWF)
11
12!     Modifications.
13!     --------------
14!        Original : 2003-03-01
15!        Modifications:
16!        03/07/09 C. Fischer - add Arome/Aladin attributes
17!        M.Hamrud      01-Oct-2003 CY28 Cleaning
18!        M. Tudor      31-Oct-2003 physics tendencies
19!        Y.Tremolet    03-Mar-2004 Protect *EACT_CLOUD_GFL for multiple calls
20!        Y.Tremolet    12-Mar-2004 Save/falsify GFLC
21!        J.Haseler     10-Oct-2005 Switch for I/O to trajectory  structure
22!        Y. Bouteloup  28-Jan-2005 Add YR (rain !) in DEACT_CLOUD_GFL
23!        20-Feb-2005 J. Vivoda  3TL PC Eulerian scheme, GWADV scheme for PC_FULL
24!        Y. Bouteloup  25-Dec-2005 Add YS (snow !) in DEACT_CLOUD_GFL
25!        A. Trojakova  29-June-2006 Add YCPF in DEACT_CLOUD_GFL
26!-------------------------------------------------------------------------
27USE PARKIND1  ,ONLY : JPIM     ,JPRB
28USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
29
30USE YOMLUN   , ONLY : NULOUT
31USE TYPE_GFLS ,ONLY : TYPE_GFL_COMP
32USE YOM_YGFL , ONLY : YGFL,JPGFL,YGFLC,YL,YI,YA,YR,YS,YCPF
33USE YOPHNC   , ONLY : LENCLD2
34USE YOMSLPHY  ,ONLY : MSAVTEND_S
35USE YOMDIM   , ONLY : NFLEVG   ,NFLSUL
36
37IMPLICIT NONE
38SAVE
39
40PRIVATE
41!PUBLIC DEFINE_GFL_COMP,PRINT_GFL,SET_GFL_ATTR,DEACT_CLOUD_GFL,REACT_CLOUD_GFL
42! MPL 10.12.08
43PUBLIC DEFINE_GFL_COMP,PRINT_GFL,SET_GFL_ATTR
44
45! For internal use
46TYPE(TYPE_GFL_COMP),POINTER :: YLASTGFLC ! Pointer to last defined field
47TYPE(TYPE_GFL_COMP),POINTER :: YPTRC     ! Temporary field pointer
48TYPE(TYPE_GFL_COMP)  :: YL_SAVE ! For saving status of cloud fields
49TYPE(TYPE_GFL_COMP)  :: YI_SAVE ! For saving status of cloud fields
50TYPE(TYPE_GFL_COMP)  :: YA_SAVE ! For saving status of cloud fields
51TYPE(TYPE_GFL_COMP)  :: YR_SAVE ! For saving status of cloud fields
52TYPE(TYPE_GFL_COMP)  :: YS_SAVE ! For saving status of cloud fields
53TYPE(TYPE_GFL_COMP)  :: YCPF_SAVE ! For saving status of cloud fields
54LOGICAL :: L_CLD_DEACT=.FALSE.
55
56#include "abor1.intfb.h"
57
58!-------------------------------------------------------------------------
59CONTAINS
60!-------------------------------------------------------------------------
61
62SUBROUTINE DEFINE_GFL_COMP(YDGFLC,CDNAME,KGRIB,LDGP,KREQIN,PREFVALI, &
63 & LDREQOUT,LDERS,LD5,LDT1,LDGPINGP,LDTRAJIO,LDTHERMACT,PR,PRCP)
64
65!**** *DEFINE_GFL_COMP*  - Setup indivual GFL field
66 
67!     Purpose.
68!     --------
69!     Basic allocation of GFL descriptor structure (on first call)
70!     Setup basic attributes of individual GFL component
71
72!        Explicit arguments :
73!        --------------------
74
75!        YDGFLC  - field handle
76!        CDNAME  - field ARPEGE name
77!        KGRIB   - GRIB code
78!        LDGP    - if TRUE gridpoint field
79!        KREQIN  - 1 if required in input, 0 if not, -1 if initialised with refernence value
80!        PREFVALI - reference value for initialisation in case NREQIN==-1
81!        LDREQOUT- TRUE if requiered in output
82!        LDERS   - TRUE if derivatives required (only possible for spectral field)
83!        LD5     - TRUE if field needs to be present in trajectory (T5)
84!        LD1     - TRUE if field needs to be present in t+dt array (GFLT1)
85!        LDTRAJIO- TRUE if field written to/from trajectory structure files
86
87!     Author.
88!     -------
89!      Mats Hamrud  *ECMWF*
90
91!     Modifications.
92!     --------------
93!      Original : 2003-03-01
94!      Modifications:
95!      03/07/09 C. Fischer - add Arome/Aladin attributes
96!-------------------------------------------------------------------------
97
98TYPE(TYPE_GFL_COMP),TARGET,INTENT(INOUT) :: YDGFLC
99CHARACTER(LEN=16),INTENT(IN) :: CDNAME
100INTEGER(KIND=JPIM),INTENT(IN) :: KGRIB
101INTEGER(KIND=JPIM),INTENT(IN) :: KREQIN
102REAL(KIND=JPRB),INTENT(IN),OPTIONAL :: PREFVALI
103LOGICAL,INTENT(IN)::   LDREQOUT
104LOGICAL,INTENT(IN) ::   LDGP
105LOGICAL,INTENT(IN) ::   LDERS
106LOGICAL,INTENT(IN) ::   LD5
107LOGICAL,INTENT(IN) ::   LDT1
108LOGICAL,INTENT(IN),OPTIONAL ::   LDGPINGP
109LOGICAL,INTENT(IN),OPTIONAL ::   LDTRAJIO
110LOGICAL,INTENT(IN),OPTIONAL ::   LDTHERMACT
111REAL(KIND=JPRB),INTENT(IN),OPTIONAL :: PR
112REAL(KIND=JPRB),INTENT(IN),OPTIONAL :: PRCP
113 
114INTEGER(KIND=JPIM) :: JGFL, ICURFLDPT, ICURFLDPC
115LOGICAL,SAVE :: LLFIRSTCALL = .TRUE.
116REAL(KIND=JPRB) :: ZHOOK_HANDLE
117
118!-------------------------------------------------------------------------
119
120!       1. Initialization of YGFL on first call to this routine
121!          ----------------------------------------------------
122
123IF (LHOOK) CALL DR_HOOK('GFL_SUBS:DEFINE_GFL_COMP',0,ZHOOK_HANDLE)
124IF(LLFIRSTCALL) THEN
125  YGFL%NUMFLDS     = 0
126  YGFL%NUMFLDS9    = 0
127  YGFL%NUMFLDS1    = 0
128  YGFL%NUMFLDS5    = 0
129  YGFL%NUMFLDSPHY  = 0
130  YGFL%NUMFLDS_SPL = 0
131  YGFL%NUMFLDS_SL1 = 0
132  YGFL%NUMFLDSPT   = 0
133  YGFL%NUMFLDSPC   = 0
134  YGFL%NDIM        = 0
135  YGFL%NDIM0       = 0
136  YGFL%NDIM9       = 0
137  YGFL%NDIM1       = 0
138  YGFL%NDIM5       = 0
139  YGFL%NDIMSLP     = 0
140  YGFL%NDIM_SPL    = 0
141  YGFL%NDIMPT      = 0
142  YGFL%NDIMPC      = 0
143  YGFL%NDERS       = 0
144  YGFL%NUMSPFLDS   = 0
145  YGFL%NUMGPFLDS   = 0
146  YGFL%NUMSPFLDS1  = 0
147  DO JGFL=1,JPGFL
148    CALL FALSIFY_GFLC(YGFLC(JGFL))
149    YGFLC(JGFL)%MP        = -HUGE(JPGFL)
150    YGFLC(JGFL)%MPL       = -HUGE(JPGFL)
151    YGFLC(JGFL)%MPM       = -HUGE(JPGFL)
152    YGFLC(JGFL)%MP9       = -HUGE(JPGFL)
153    YGFLC(JGFL)%MP9_PH    = -HUGE(JPGFL)
154    YGFLC(JGFL)%MP1       = -HUGE(JPGFL)
155    YGFLC(JGFL)%MP5       = -HUGE(JPGFL)
156    YGFLC(JGFL)%MP5L      = -HUGE(JPGFL)
157    YGFLC(JGFL)%MP5M      = -HUGE(JPGFL)
158    YGFLC(JGFL)%MPSLP     = -HUGE(JPGFL)
159    YGFLC(JGFL)%MPSP      = -HUGE(JPGFL)
160    YGFLC(JGFL)%MP_SPL    = -HUGE(JPGFL)
161    YGFLC(JGFL)%MP_SL1    = -HUGE(JPGFL)
162    YGFLC(JGFL)%MP_SLX    = -HUGE(JPGFL)
163    YGFLC(JGFL)%MPPT      = -HUGE(JPGFL)
164    YGFLC(JGFL)%MPPC      = -HUGE(JPGFL)
165  ENDDO
166  NULLIFY(YLASTGFLC)
167  LLFIRSTCALL = .FALSE.
168ENDIF
169
170!-------------------------------------------------------------------------
171
172!      2. Define GFL component
173!         --------------------
174
175!      2.1 Some checks
176IF(LDGP) THEN
177  DO JGFL=1,YGFL%NUMFLDS
178    IF(.NOT. YGFLC(JGFL)%LGP) THEN
179      !        Grid-point fields should be defined before any spectral field
180      CALL ABOR1('YOMMFL:DEFINE_GFL_COMP:GRIDPOINT BEFORE SPECTRAL')
181    ENDIF
182  ENDDO
183ENDIF
184IF(LDGP) THEN
185  IF(LDERS) THEN
186    !      Derivatives can only be defined for spectral fields
187    CALL ABOR1('YOMMFL:DEFINE_GFL_COMP:DERIVATIVES ONLY WITH SPECTRAL')
188  ENDIF
189ENDIF
190IF(YGFL%NUMFLDS == JPGFL) THEN
191  WRITE(NULOUT,*) ' MAXIMUM NUMBER OF FIELDS ALREADY DEFINED'
192  CALL ABOR1('YOMMFL: EXCEED NUMBER OF FIELDS')
193ENDIF
194
195!      2.2 Define field attributes
196
197ICURFLDPT = YGFL%NUMFLDS+1
198ICURFLDPC = YGFL%NUMFLDS+1
199
200YDGFLC%LACTIVE = .TRUE.
201YDGFLC%CNAME = CDNAME
202YDGFLC%IGRBCODE = KGRIB
203YDGFLC%NREQIN = KREQIN
204IF (PRESENT(PREFVALI)) THEN
205  YDGFLC%REFVALI = PREFVALI
206ENDIF
207YDGFLC%LREQOUT = LDREQOUT
208YDGFLC%LGP = LDGP
209YDGFLC%LSP= .NOT. YDGFLC%LGP
210YDGFLC%LT5 = LD5
211YDGFLC%LT1 = LDT1
212YDGFLC%LCDERS  = LDERS
213IF(PRESENT(LDGPINGP)) YDGFLC%LGPINGP=LDGPINGP
214IF(PRESENT(LDTRAJIO)) YDGFLC%LTRAJIO=LDTRAJIO
215IF(PRESENT(LDTHERMACT)) YDGFLC%LTHERMACT=LDTHERMACT
216IF(YDGFLC%LTHERMACT) THEN
217  IF(.NOT.PRESENT(PR)) &
218   &CALL ABOR1('GFL_SUBS:DEFINE_GFL_COMPONENT - PR MISSING')
219  IF(.NOT.PRESENT(PRCP)) &
220   &CALL ABOR1('GFL_SUBS:DEFINE_GFL_COMPONENT - PRCP MISSING')
221  YDGFLC%R = PR
222  YDGFLC%RCP = PRCP
223ENDIF
224
225!    2.3  Numbers of fields and dimensions
226YGFL%NUMFLDS = YGFL%NUMFLDS+1
227IF (YDGFLC%LT5) YGFL%NUMFLDS5 = YGFL%NUMFLDS5+1
228
229IF(YDGFLC%LCDERS) THEN
230  YGFL%NDIM = YGFL%NDIM+3
231  YGFL%NDIM0 = YGFL%NDIM0+3
232  YGFL%NDERS = YGFL%NDERS+1
233  IF (YDGFLC%LT5) YGFL%NDIM5 = YGFL%NDIM5+3
234ELSE
235  YGFL%NDIM = YGFL%NDIM+1
236  YGFL%NDIM0 = YGFL%NDIM0+1
237  IF (YDGFLC%LT5) YGFL%NDIM5 = YGFL%NDIM5+1
238ENDIF
239
240IF(YDGFLC%LSP) THEN
241  YGFL%NUMSPFLDS =YGFL%NUMSPFLDS+1
242ELSE
243  YGFL%NUMGPFLDS =YGFL%NUMGPFLDS+1
244ENDIF
245
246IF (YDGFLC%LT1)  THEN
247  YGFL%NUMFLDS1 = YGFL%NUMFLDS1+1
248  YGFL%NDIM1 = YGFL%NDIM1+1
249  IF (YDGFLC%LSP) YGFL%NUMSPFLDS1 =YGFL%NUMSPFLDS1+1
250ENDIF 
251
252!    2.4  Define field "pointers"
253YDGFLC%MP5 = -HUGE(JPGFL)
254IF (YDGFLC%LGP) THEN
255  YDGFLC%MP = YGFL%NDIM0
256  IF (YDGFLC%LT5) YDGFLC%MP5 = YGFL%NDIM5
257ELSE
258  YDGFLC%MP = YGFL%NUMFLDS
259  IF (YDGFLC%LT5) YDGFLC%MP5 = YGFL%NUMFLDS5
260ENDIF
261IF (YDGFLC%LCDERS) THEN
262  YDGFLC%MPM = YDGFLC%MP+YGFL%NDERS
263  YDGFLC%MPL = YDGFLC%MP+2*YGFL%NDERS
264  IF(YDGFLC%LT5) THEN
265    YDGFLC%MP5M = YDGFLC%MP5+YGFL%NDERS
266    YDGFLC%MP5L = YDGFLC%MP5+2*YGFL%NDERS
267  ENDIF
268ELSE
269  YDGFLC%MPL = -HUGE(JPGFL)
270  YDGFLC%MPM = -HUGE(JPGFL)
271  YDGFLC%MP5L = -HUGE(JPGFL)
272  YDGFLC%MP5M = -HUGE(JPGFL)
273ENDIF
274
275IF(YDGFLC%LSP) THEN
276  YDGFLC%MPSP = YGFL%NUMSPFLDS
277ELSE
278  YDGFLC%MPSP = -HUGE(JPGFL)
279ENDIF
280
281IF (YDGFLC%LT1)  THEN
282  YDGFLC%MP1 = YGFL%NUMFLDS1
283ELSE
284  YDGFLC%MP1 = -HUGE(JPGFL)
285ENDIF 
286 
287!      2.6  Possibly reassign pointers (needed for multiple fields with derivatives)
288
289IF(ASSOCIATED(YLASTGFLC)) THEN
290  YPTRC=>YLASTGFLC
291  DO
292    IF(.NOT.LDGP) THEN
293      IF(YPTRC%LCDERS) THEN
294        YPTRC%MPM = YPTRC%MPM+1
295        IF(LDERS)THEN
296          YPTRC%MPL = YPTRC%MPL+2
297        ELSE
298          YPTRC%MPL = YPTRC%MPL+1
299        ENDIF
300      ENDIF
301      WRITE(NULOUT,*)' DEFINE_GFL_COMP:CHECKING ',YPTRC%CNAME
302      WRITE(NULOUT,*)' REASSIGNED MPL=',YPTRC%MPL,' MPM=',YPTRC%MPM
303      IF (YDGFLC%LT5) THEN
304        IF(YPTRC%LT5) THEN
305          IF(YPTRC%LCDERS) THEN
306            YPTRC%MP5M = YPTRC%MP5M+1
307            IF(LDERS)THEN
308              YPTRC%MP5L = YPTRC%MP5L+2
309            ELSE
310              YPTRC%MP5L = YPTRC%MP5L+1
311            ENDIF
312          ENDIF
313          WRITE(NULOUT,*)' REASSIGNED MP5L=',YPTRC%MP5L,' MP5M=',YPTRC%MP5M
314        ENDIF
315      ENDIF
316
317    ENDIF
318    IF(.NOT.ASSOCIATED(YPTRC%PREVIOUS)) EXIT
319    YPTRC=>YPTRC%PREVIOUS
320  ENDDO
321ENDIF
322
323!    2.7  Point to last defined field
324YDGFLC%PREVIOUS=>YLASTGFLC
325YLASTGFLC => YDGFLC
326IF (LHOOK) CALL DR_HOOK('GFL_SUBS:DEFINE_GFL_COMP',1,ZHOOK_HANDLE)
327
328!     ------------------------------------------------------------------
329END SUBROUTINE DEFINE_GFL_COMP
330
331!=========================================================================
332
333SUBROUTINE SET_GFL_ATTR(YDGFLC,LDADV,LDT9,LDPHY,LDPT,LDPC,LDADJUST0,&
334 & LDADJUST1,KCOUPLING,PREFVALC,LDBIPER,CDSLINT) 
335
336!**** *SET_GFL_ATTR* Add attributes to previously setup GFL components
337
338!     Purpose.
339!     --------
340!     Add further attributes to previously setup, by call to DEFINE_GFL_COMP, GFL components
341
342!        Explicit arguments :
343!        --------------------
344!        LDADV   - TRUE if field to be advected
345!        LDT9    - TRUE if field present in t-dt
346!        LDPHY   - TRUE if field updated by physics
347!        LDPT    - TRUE if field present in phy. tend.
348!        LDPC    - TRUE if field in predictor/corrector time stepping treatment (3TL)
349!        LDADJUST0  - TRUE if field to be adjusted at t
350!        LDADJUST1  - TRUE if field to be adjusted at t+dt
351!        KCOUPLING - 1 if field to be coupled, 0 if not, -1 if coupled with REFVALC
352!        REVALC     - refernce value for coupling, used only in case NCOUPLING==-1
353!        LDBIPER    - TRUE if field to be biperiodised
354!        CDSLINT - S.L. interpolator
355
356!     Author.
357!     -------
358!      Mats Hamrud  *ECMWF*
359
360!     Modifications.
361!     --------------
362!      Original : 2003-03-01
363!      Modifications:
364!      03/07/09 C. Fischer - add Arome/Aladin attributes
365!      2004-Nov F. Vana - update of CDSLINT
366!-------------------------------------------------------------------------
367
368TYPE(TYPE_GFL_COMP),TARGET,INTENT(INOUT) :: YDGFLC
369LOGICAL,INTENT(IN),OPTIONAL :: LDADV
370LOGICAL,INTENT(IN),OPTIONAL :: LDT9
371LOGICAL,INTENT(IN),OPTIONAL :: LDPHY
372LOGICAL,INTENT(IN),OPTIONAL :: LDPT
373LOGICAL,INTENT(IN),OPTIONAL :: LDPC
374LOGICAL,INTENT(IN),OPTIONAL :: LDADJUST0
375LOGICAL,INTENT(IN),OPTIONAL :: LDADJUST1
376INTEGER(KIND=JPIM),INTENT(IN),OPTIONAL :: KCOUPLING
377REAL(KIND=JPRB),INTENT(IN),OPTIONAL :: PREFVALC
378LOGICAL,INTENT(IN),OPTIONAL :: LDBIPER
379CHARACTER(LEN=12),INTENT(IN),OPTIONAL  :: CDSLINT
380
381INTEGER(KIND=JPIM) :: IGFLPTR
382REAL(KIND=JPRB) :: ZHOOK_HANDLE
383
384!-------------------------------------------------------------------------
385
386IF (LHOOK) CALL DR_HOOK('GFL_SUBS:SET_GFL_ATTR',0,ZHOOK_HANDLE)
387IF(YDGFLC%MP < 1 .OR. YDGFLC%MP > YGFL%NUMFLDS) THEN
388  CALL ABOR1('SET_GFL_ATTR: GFL COMPONENT NOT SET UP')
389ELSE
390  IGFLPTR=YDGFLC%MP
391ENDIF
392
393IF(PRESENT(LDADV)) THEN
394  YDGFLC%LADV = LDADV
395ENDIF
396IF(YDGFLC%LADV) THEN
397  IF(.NOT.YDGFLC%LT1) THEN
398    CALL ABOR1(' GFL field to be advected but LT1=false')
399  ENDIF
400  YGFL%NUMFLDS_SL1 = YGFL%NUMFLDS_SL1+1
401  YDGFLC%MP_SL1 = YGFL%NUMFLDS_SL1
402  YDGFLC%MP_SLX = (YGFL%NUMFLDS_SL1-1)*(NFLEVG+2*NFLSUL)
403ENDIF
404 
405
406! Other timelevels etc.
407
408IF(PRESENT(LDT9)) THEN
409  YDGFLC%LT9 = LDT9
410ENDIF
411IF(YDGFLC%LT9 .AND. YDGFLC%MP9 == -HUGE(JPGFL) ) THEN
412  YGFL%NUMFLDS9 = YGFL%NUMFLDS9+1
413  YGFL%NDIM  = YGFL%NDIM+1
414  YGFL%NDIM9 = YGFL%NDIM9+1
415  YDGFLC%MP9 = YGFL%NDIM0+YGFL%NUMFLDS9
416  YDGFLC%MP9_PH = YDGFLC%MP9
417ELSE
418  YDGFLC%MP9 = YDGFLC%MP
419  YDGFLC%MP9_PH = YDGFLC%MP9
420  WRITE(NULOUT,*) 'WARNING YDGFLC%MP9 = YDGFLC%MP',YDGFLC%MP9,YDGFLC%MP
421ENDIF
422
423IF(PRESENT(LDPHY)) THEN
424  YDGFLC%LPHY = LDPHY
425ENDIF
426IF(YGFL%NUMFLDSPHY == 0)YGFL%NUMFLDSPHY=YGFL%NUMFLDSPHY-MSAVTEND_S
427IF(YDGFLC%MPSLP == -HUGE(JPGFL)) THEN
428  IF(YDGFLC%LPHY) THEN
429    IF(.NOT.YDGFLC%LT1) THEN
430      CALL ABOR1(' GFL field to be modified by physics but LT1=false')
431    ENDIF
432    YGFL%NUMFLDSPHY = YGFL%NUMFLDSPHY+1+MSAVTEND_S
433    YGFL%NDIMSLP = YGFL%NDIMSLP+1+MSAVTEND_S
434    YDGFLC%MPSLP = YGFL%NUMFLDSPHY
435  ENDIF
436ENDIF
437
438IF(PRESENT(LDPT)) THEN
439  YDGFLC%LPT = LDPT
440ENDIF
441IF(YDGFLC%MPPT == -HUGE(JPGFL)) THEN
442  IF(YDGFLC%LPT) THEN
443    YGFL%NUMFLDSPT = YGFL%NUMFLDSPT+1
444    YGFL%NDIMPT = YGFL%NDIMPT+1
445    YDGFLC%MPPT = YGFL%NUMFLDSPT
446  ENDIF
447ENDIF
448IF(PRESENT(LDPC)) THEN
449  YDGFLC%LPC = LDPC
450ENDIF
451IF(YDGFLC%MPPC == -HUGE(JPGFL)) THEN
452  IF(YDGFLC%LPC) THEN
453    YGFL%NUMFLDSPC = YGFL%NUMFLDSPC+1
454    YGFL%NDIMPC = YGFL%NDIMPC+1
455    YDGFLC%MPPC = YGFL%NUMFLDSPC
456  ENDIF
457ENDIF
458
459
460! LAM attributes (do not involve extra dimensioning or pointers)
461
462IF(PRESENT(LDADJUST0)) THEN
463  YDGFLC%LADJUST0 = LDADJUST0
464ENDIF
465IF(PRESENT(LDADJUST1)) THEN
466  YDGFLC%LADJUST1 = LDADJUST1
467ENDIF
468IF(PRESENT(KCOUPLING)) THEN
469  YDGFLC%NCOUPLING = KCOUPLING
470ENDIF
471IF(PRESENT(PREFVALC)) THEN
472  YDGFLC%REFVALC = PREFVALC
473ENDIF
474IF(PRESENT(LDBIPER)) THEN
475  YDGFLC%LBIPER = LDBIPER
476ENDIF
477
478IF(PRESENT(CDSLINT)) THEN
479  YDGFLC%CSLINT=CDSLINT
480  IF(YDGFLC%MP_SPL == -HUGE(JPGFL)) THEN
481    IF(CDSLINT == 'LAITVSPCQM  ') THEN
482      YGFL%NUMFLDS_SPL = YGFL%NUMFLDS_SPL+1
483      YGFL%NDIM_SPL = YGFL%NDIM_SPL+1
484      YDGFLC%MP_SPL = YGFL%NUMFLDS_SPL
485    ENDIF
486  ENDIF
487ENDIF
488IF (LHOOK) CALL DR_HOOK('GFL_SUBS:SET_GFL_ATTR',1,ZHOOK_HANDLE)
489
490!     -------------------------------------------------------------------
491END SUBROUTINE SET_GFL_ATTR
492
493!=========================================================================
494
495SUBROUTINE PRINT_GFL
496
497!**** *PRINT_GFL*  - Print GFL attributes
498
499!     -------------------------------------------------------------------
500
501REAL(KIND=JPRB) :: ZHOOK_HANDLE
502IF (LHOOK) CALL DR_HOOK('GFL_SUBS:PRINT_GFL',0,ZHOOK_HANDLE)
503WRITE(NULOUT,*) ' ---- GFL COMPONENT ATTRIBUTES ----'
504IF(ASSOCIATED(YLASTGFLC)) THEN
505  YPTRC=>YLASTGFLC
506  DO
507    WRITE(NULOUT,*) ' GFL COMPONENT DEFINED - NAME=',&
508     & YPTRC%CNAME,' GRIBCODE=', YPTRC%IGRBCODE 
509    WRITE(NULOUT,*)' LGP=',YPTRC%LGP,' NREQIN=',YPTRC%NREQIN, &
510     & ' LREQOUT=',YPTRC%LREQOUT,' REFVALI=',YPTRC%REFVALI, &
511     & ' LCDERS=', YPTRC%LCDERS,' LADV=',YPTRC%LADV, &
512     & ' LPHY=',YPTRC%LPHY,' LPT=',YPTRC%LPT,' LPC=',YPTRC%LPC
513    WRITE(NULOUT,*)' LADJUST0=',YPTRC%LADJUST0,' LADJUST1=',YPTRC%LADJUST1,&
514     & ' NCOUPLING=',YPTRC%NCOUPLING,' REFVALC=',YPTRC%REFVALC,&
515     & ' LBIPER=',YPTRC%LBIPER 
516    WRITE(NULOUT,*)' LTRAJIO=',YPTRC%LTRAJIO,' LGPINGP=',YPTRC%LGPINGP
517    WRITE(NULOUT,*)' CSLINT=',YPTRC%CSLINT
518     WRITE(NULOUT,*)'LTHERMACT=',YPTRC%LTHERMACT,&
519      & ' R=',YPTRC%R,' RCP=',YPTRC%RCP
520    WRITE(NULOUT,*)' MP=',YPTRC%MP,' MPL=',YPTRC%MPL,&
521     & ' MPM=',YPTRC%MPM,' MP9=',YPTRC%MP9,' MP1=',YPTRC%MP1,&
522     & ' MP5=',YPTRC%MP5,' MP5L=',YPTRC%MP5L,' MP5M=',YPTRC%MP5M, &
523     & ' MPSLP=',YPTRC%MPSLP,' MPSP=',YPTRC%MPSP,&
524     & ' MPPT=',YPTRC%MPPT, ' MPPC=',YPTRC%MPPC
525    IF(.NOT.ASSOCIATED(YPTRC%PREVIOUS)) EXIT
526    YPTRC=>YPTRC%PREVIOUS
527  ENDDO
528ENDIF
529
530WRITE(NULOUT,*) ' ---- YGFL ATTRIBUTES ----'
531WRITE(NULOUT,*) ' YGFL%NUMFLDS=',YGFL%NUMFLDS,&
532 & ' YGFL%NUMSPFLDS=',YGFL%NUMSPFLDS,' YGFL%NUMGPFLDS=',YGFL%NUMGPFLDS,&
533 & ' YGFL%NDERS=',YGFL%NDERS,' YGFL%NUMFLDSPT=',YGFL%NUMFLDSPT,&
534 & ' YGFL%NUMFLDSPC=',YGFL%NUMFLDSPC
535WRITE(NULOUT,*) ' YGFL%NUMFLDS_SL1=',YGFL%NUMFLDS_SL1
536WRITE(NULOUT,*) ' YGFL%NDIM=',YGFL%NDIM,' YGFL%NDIM0=',YGFL%NDIM0,&
537 & ' YGFL%NDIM9=',YGFL%NDIM9,' YGFL%NDIM1=',YGFL%NDIM1,&
538 & ' YGFL%NDIM5=',YGFL%NDIM5,' YGFL%NDIMSLP=',YGFL%NDIMSLP,&
539 & ' YGFL%NDIMPT=',YGFL%NDIMPT,' YGFL%NDIMPC=',YGFL%NDIMPC
540!!$WRITE(NULOUT,*) ' YGFL%CNAMES=',YGFL%CNAMES(1:YGFL%NUMFLDS)
541!!$WRITE(NULOUT,*) ' YGFL%IGRBCODE=',YGFL%IGRBCODE(1:YGFL%NUMFLDS)
542!!$WRITE(NULOUT,*) ' YGFL%NREQIN=',YGFL%NREQIN(1:YGFL%NUMFLDS)
543!!$WRITE(NULOUT,*) ' YGFL%REFVALI=',YGFL%REFVALI(1:YGFL%NUMFLDS)
544!!$WRITE(NULOUT,*) ' YGFL%LREQOUT=',YGFL%LREQOUT(1:YGFL%NUMFLDS)
545!!$WRITE(NULOUT,*) ' YGFL%LADV=',YGFL%LADV(1:YGFL%NUMFLDS)
546!!$WRITE(NULOUT,*) ' YGFL%CSLINT=',YGFL%CSLINT(1:YGFL%NUMFLDS)
547!!$WRITE(NULOUT,*) ' YGFL%MP=',YGFL%MP(1:YGFL%NUMFLDS)
548!!$WRITE(NULOUT,*) ' YGFL%LSP=',YGFL%LSP(1:YGFL%NUMFLDS)
549!!$WRITE(NULOUT,*) ' YGFL%MPSP=',YGFL%MPSP(1:YGFL%NUMFLDS)
550!!$WRITE(NULOUT,*) ' YGFL%LCDERS=',YGFL%LCDERS(1:YGFL%NUMFLDS)
551!!$WRITE(NULOUT,*) ' YGFL%LTRAJIO=',YGFL%LTRAJIO(1:YGFL%NUMFLDS)
552!!$WRITE(NULOUT,*) ' YGFL%MPL=',YGFL%MPL(1:YGFL%NUMFLDS)
553!!$WRITE(NULOUT,*) ' YGFL%MPM=',YGFL%MPM(1:YGFL%NUMFLDS)
554!!$WRITE(NULOUT,*) ' YGFL%LT9=',YGFL%LT9(1:YGFL%NUMFLDS)
555!!$WRITE(NULOUT,*) ' YGFL%MP9=',YGFL%MP9(1:YGFL%NUMFLDS)
556!!$WRITE(NULOUT,*) ' YGFL%LT1=',YGFL%LT1(1:YGFL%NUMFLDS)
557!!$WRITE(NULOUT,*) ' YGFL%MP1=',YGFL%MP1(1:YGFL%NUMFLDS)
558!!$WRITE(NULOUT,*) ' YGFL%LT5=',YGFL%LT5(1:YGFL%NUMFLDS)
559!!$WRITE(NULOUT,*) ' YGFL%MP5=',YGFL%MP5(1:YGFL%NUMFLDS)
560!!$WRITE(NULOUT,*) ' YGFL%MP5L=',YGFL%MP5L(1:YGFL%NUMFLDS)
561!!$WRITE(NULOUT,*) ' YGFL%MP5M=',YGFL%MP5M(1:YGFL%NUMFLDS)
562!!$WRITE(NULOUT,*) ' YGFL%LPHY=',YGFL%LPHY(1:YGFL%NUMFLDS)
563!!$WRITE(NULOUT,*) ' YGFL%MPSLP=',YGFL%MPSLP(1:YGFL%NUMFLDS)
564!!$WRITE(NULOUT,*) ' YGFL%LPT=',YGFL%LPT(1:YGFL%NUMFLDS)
565!!$WRITE(NULOUT,*) ' YGFL%MPPT=',YGFL%MPPT(1:YGFL%NUMFLDS)
566!!$WRITE(NULOUT,*) ' YGFL%LPC=',YGFL%LPC(1:YGFL%NUMFLDS)
567!!$WRITE(NULOUT,*) ' YGFL%MPPC=',YGFL%MPPC(1:YGFL%NUMFLDS)
568!!$WRITE(NULOUT,*) ' YGFL%LADJUST0=',YGFL%LADJUST0(1:YGFL%NUMFLDS)
569!!$WRITE(NULOUT,*) ' YGFL%LADJUST1=',YGFL%LADJUST1(1:YGFL%NUMFLDS)
570!!$WRITE(NULOUT,*) ' YGFL%NCOUPLING=',YGFL%NCOUPLING(1:YGFL%NUMFLDS)
571!!$WRITE(NULOUT,*) ' YGFL%REFVALC=',YGFL%REFVALC(1:YGFL%NUMFLDS)
572!!$WRITE(NULOUT,*) ' YGFL%LBIPER=',YGFL%LBIPER(1:YGFL%NUMFLDS)
573WRITE(NULOUT,*) ' --------------------------------------------'
574IF (LHOOK) CALL DR_HOOK('GFL_SUBS:PRINT_GFL',1,ZHOOK_HANDLE)
575END SUBROUTINE PRINT_GFL
576
577!=========================================================================
578
579!SUBROUTINE DEACT_CLOUD_GFL  ! commente par MPL 10.12.08 (et REACT_CLOUD_GFL)
580!
581!**** *DEACT_CLOUD_GFL* Deactivate prognostic cloud variables
582!
583!     ------------------------------------------------------------------
584!
585!INTEGER(KIND=JPIM) :: JGFL
586!REAL(KIND=JPRB) :: ZHOOK_HANDLE
587!
588!#include "suslb.intfb.h"
589!
590!IF (LHOOK) CALL DR_HOOK('GFL_SUBS:DEACT_CLOUD_GFL',0,ZHOOK_HANDLE)
591!
592!IF (.NOT.L_CLD_DEACT .AND. &
593! & (YL%LACTIVE .OR. YI%LACTIVE .OR. &
594! &  YR%LACTIVE .OR. YS%LACTIVE .OR. YA%LACTIVE .OR. YCPF%LACTIVE ) ) THEN
595!  CALL COPY_GFLC_GFLC(YL_SAVE,YL)
596!  CALL COPY_GFLC_GFLC(YI_SAVE,YI)
597!  CALL COPY_GFLC_GFLC(YR_SAVE,YR)
598!  CALL COPY_GFLC_GFLC(YS_SAVE,YS)
599!  CALL COPY_GFLC_GFLC(YA_SAVE,YA)
600!  CALL COPY_GFLC_GFLC(YCPF_SAVE,YCPF)
601
602!  IF( .NOT. LENCLD2) THEN
603!    IF (YL%LGP) YGFL%NUMGPFLDS=YGFL%NUMGPFLDS-1
604!    IF (YI%LGP) YGFL%NUMGPFLDS=YGFL%NUMGPFLDS-1
605!    IF (YR%LGP) YGFL%NUMGPFLDS=YGFL%NUMGPFLDS-1
606!    IF (YS%LGP) YGFL%NUMGPFLDS=YGFL%NUMGPFLDS-1
607!    IF (YA%LGP) YGFL%NUMGPFLDS=YGFL%NUMGPFLDS-1
608!    IF (YCPF%LGP) YGFL%NUMGPFLDS=YGFL%NUMGPFLDS-1
609!
610!    IF (YL%LT5) YGFL%NUMFLDS5=YGFL%NUMFLDS5-1
611!    IF (YI%LT5) YGFL%NUMFLDS5=YGFL%NUMFLDS5-1
612!    IF (YR%LT5) YGFL%NUMFLDS5=YGFL%NUMFLDS5-1
613!    IF (YS%LT5) YGFL%NUMFLDS5=YGFL%NUMFLDS5-1
614!    IF (YA%LT5) YGFL%NUMFLDS5=YGFL%NUMFLDS5-1
615!    IF (YCPF%LT5) YGFL%NUMFLDS5=YGFL%NUMFLDS5-1
616!
617!    CALL FALSIFY_GFLC(YL)
618!    CALL FALSIFY_GFLC(YI)
619!    CALL FALSIFY_GFLC(YR)
620!   CALL FALSIFY_GFLC(YS)
621!   CALL FALSIFY_GFLC(YA)
622!   CALL FALSIFY_GFLC(YCPF)
623! ELSE
624!   CALL NOADVECT_GFLC(YL)
625!   CALL NOADVECT_GFLC(YI)
626!   CALL NOADVECT_GFLC(YR)
627!   CALL NOADVECT_GFLC(YS)
628!   CALL NOADVECT_GFLC(YA)
629!   CALL NOADVECT_GFLC(YCPF)
630! ENDIF
631! YGFL%NUMFLDS_SL1 = 0
632! DO JGFL=1,YGFL%NUMFLDS
633!   YGFLC(JGFL)%MP_SL1 = -HUGE(JPGFL)
634!   IF(YGFLC(JGFL)%LADV) THEN
635!     YGFL%NUMFLDS_SL1 = YGFL%NUMFLDS_SL1+1
636!     YGFLC(JGFL)%MP_SL1 = YGFL%NUMFLDS_SL1
637!     YGFLC(JGFL)%MP_SLX = (YGFLC(JGFL)%MP_SL1-1)*(NFLEVG+2*NFLSUL)
638!   ENDIF
639! ENDDO
640! CALL SUSLB
641!
642! L_CLD_DEACT=.TRUE.
643! WRITE(NULOUT,*)' CLOUD FIELDS DE-ACTIVATAD, YGFL%NUMGPFLDS=', &
644! & YGFL%NUMGPFLDS,' YGFL%NUMFLDS_SL1=', YGFL%NUMFLDS_SL1
645!ENDIF
646!
647!IF (LHOOK) CALL DR_HOOK('GFL_SUBS:DEACT_CLOUD_GFL',1,ZHOOK_HANDLE)
648!
649!END SUBROUTINE DEACT_CLOUD_GFL
650!
651!!=========================================================================
652!
653!SUBROUTINE REACT_CLOUD_GFL
654!!**** *REACT_CLOUD_GFL* Reactivate prognostic cloud variables
655!
656!INTEGER(KIND=JPIM) :: JGFL
657!REAL(KIND=JPRB) :: ZHOOK_HANDLE
658!LOGICAL :: LLGPI,LLGPL,LLGPA
659!#include "suslb.intfb.h"
660!!     ------------------------------------------------------------------
661!IF (LHOOK) CALL DR_HOOK('GFL_SUBS:REACT_CLOUD_GFL',0,ZHOOK_HANDLE)
662!
663!IF (L_CLD_DEACT) THEN
664!  LLGPL = YL%LGP
665!  LLGPI = YI%LGP
666!  LLGPA = YA%LGP
667
668!  CALL COPY_GFLC_GFLC(YL,YL_SAVE)
669!  CALL COPY_GFLC_GFLC(YI,YI_SAVE)
670!  CALL COPY_GFLC_GFLC(YA,YA_SAVE)
671!
672!  IF (.NOT. LLGPL .AND. YL%LGP) YGFL%NUMGPFLDS=YGFL%NUMGPFLDS+1
673!  IF (.NOT. LLGPI .AND. YI%LGP) YGFL%NUMGPFLDS=YGFL%NUMGPFLDS+1
674!  IF (.NOT. LLGPA .AND. YA%LGP) YGFL%NUMGPFLDS=YGFL%NUMGPFLDS+1
675!
676!  YGFL%NUMFLDS_SL1 = 0
677!  DO JGFL=1,YGFL%NUMFLDS
678!    YGFLC(JGFL)%MP_SL1 = -HUGE(JPGFL)
679!    IF(YGFLC(JGFL)%LADV) THEN
680!      YGFL%NUMFLDS_SL1 = YGFL%NUMFLDS_SL1+1
681!      YGFLC(JGFL)%MP_SL1 = YGFL%NUMFLDS_SL1
682!      YGFLC(JGFL)%MP_SLX = (YGFLC(JGFL)%MP_SL1-1)*(NFLEVG+2*NFLSUL)
683!    ENDIF
684!  ENDDO
685!  CALL SUSLB
686!
687!  L_CLD_DEACT=.FALSE.
688!  WRITE(NULOUT,*)' CLOUD FIELDS RE-ACTIVATAD, YGFL%NUMGPFLDS=', &
689!  & YGFL%NUMGPFLDS,' YGFL%NUMFLDS_SL1=', YGFL%NUMFLDS_SL1
690!ENDIF
691!
692!IF (LHOOK) CALL DR_HOOK('GFL_SUBS:REACT_CLOUD_GFL',1,ZHOOK_HANDLE)
693!
694!!     ------------------------------------------------------------------
695!END SUBROUTINE REACT_CLOUD_GFL
696
697!=========================================================================
698
699SUBROUTINE FALSIFY_GFLC(YDGFLC)
700
701!     Purpose.
702!     --------
703!       Set field descriptors to false.
704
705!     Author.
706!     -------
707!      Y. Tremolet
708
709!     Modifications.
710!     --------------
711!      Original : 2004-03-12
712!-------------------------------------------------------------------------
713
714TYPE(TYPE_GFL_COMP),INTENT(INOUT) :: YDGFLC
715REAL(KIND=JPRB) :: ZHOOK_HANDLE
716
717IF (LHOOK) CALL DR_HOOK('GFL_SUBS:FALSIFY_GFLC',0,ZHOOK_HANDLE)
718YDGFLC%CNAME     = ''
719YDGFLC%IGRBCODE  = -HUGE(JPGFL)
720YDGFLC%LADV      = .FALSE.
721YDGFLC%NREQIN    = 0
722YDGFLC%REFVALI   = 0.0_JPRB
723YDGFLC%LREQOUT   = .FALSE.
724YDGFLC%LGPINGP   = .TRUE.
725YDGFLC%LTRAJIO   = .FALSE.
726YDGFLC%LGP       = .FALSE.
727YDGFLC%LSP       = .FALSE.
728YDGFLC%LCDERS    = .FALSE.
729YDGFLC%LACTIVE   = .FALSE.
730YDGFLC%LTHERMACT = .FALSE.
731YDGFLC%LT9       = .FALSE.
732YDGFLC%LT1       = .FALSE.
733YDGFLC%LT5       = .FALSE.
734YDGFLC%LPHY      = .FALSE.
735YDGFLC%LPT       = .FALSE.
736YDGFLC%LPC       = .FALSE.
737YDGFLC%LADJUST0  = .FALSE.
738YDGFLC%LADJUST1  = .FALSE.
739YDGFLC%NCOUPLING = 0
740YDGFLC%REFVALC   = 0.0_JPRB
741YDGFLC%LBIPER    = .FALSE.
742YDGFLC%CSLINT    = ''
743YDGFLC%R         = 0.0_JPRB
744YDGFLC%RCP       = 0.0_JPRB
745!yt YDGFLC%MP        = -HUGE(JPGFL)
746!yt YDGFLC%MPL       = -HUGE(JPGFL)
747!yt YDGFLC%MPM       = -HUGE(JPGFL)
748!yt YDGFLC%MP9       = -HUGE(JPGFL)
749!yt YDGFLC%MP1       = -HUGE(JPGFL)
750!yt YDGFLC%MP5       = -HUGE(JPGFL)
751!yt YDGFLC%MP5L      = -HUGE(JPGFL)
752!yt YDGFLC%MP5M      = -HUGE(JPGFL)
753!yt YDGFLC%MPSLP     = -HUGE(JPGFL)
754!yt YDGFLC%MPSP      = -HUGE(JPGFL)
755!yt YDGFLC%MP_SPL    = -HUGE(JPGFL)
756!yt;-) YDGFLC%MPPT   = -HUGE(JPGFL)
757!yt;-) YDGFLC%MPPC   = -HUGE(JPGFL)
758!yt NULLIFY(YDGFLC%PREVIOUS)
759IF (LHOOK) CALL DR_HOOK('GFL_SUBS:FALSIFY_GFLC',1,ZHOOK_HANDLE)
760
761END SUBROUTINE FALSIFY_GFLC
762!=========================================================================
763
764SUBROUTINE NOADVECT_GFLC(YDGFLC)
765
766!     Purpose.
767!     --------
768!       Switch off advection ect.
769
770!     Author.
771!     -------
772!      Y. Tremolet
773
774!     Modifications.
775!     --------------
776!      Original : 2004-03-12
777!-------------------------------------------------------------------------
778
779TYPE(TYPE_GFL_COMP),INTENT(INOUT) :: YDGFLC
780REAL(KIND=JPRB) :: ZHOOK_HANDLE
781
782IF (LHOOK) CALL DR_HOOK('GFL_SUBS:NOADVECT_GFLC',0,ZHOOK_HANDLE)
783YDGFLC%LADV      = .FALSE.
784YDGFLC%LCDERS    = .FALSE.
785YDGFLC%LT1       = .FALSE.
786YDGFLC%LT5       = .FALSE.
787YDGFLC%LPHY      = .FALSE.
788YDGFLC%LPT       = .FALSE.
789YDGFLC%LADJUST0  = .FALSE.
790YDGFLC%LADJUST1  = .FALSE.
791YDGFLC%LBIPER    = .FALSE.
792YDGFLC%CSLINT    = ''
793IF (LHOOK) CALL DR_HOOK('GFL_SUBS:NOADVECT_GFLC',1,ZHOOK_HANDLE)
794
795END SUBROUTINE NOADVECT_GFLC
796
797!=========================================================================
798
799SUBROUTINE COPY_GFLC_GFLC(YDGFLC1,YDGFLC2)
800
801!     Purpose.
802!     --------
803!       Copy field descriptors.
804
805!     Author.
806!     -------
807!      Y. Tremolet
808
809!     Modifications.
810!     --------------
811!      Original : 2004-03-12
812!-------------------------------------------------------------------------
813
814TYPE (TYPE_GFL_COMP), INTENT(INOUT) :: YDGFLC1
815TYPE (TYPE_GFL_COMP), INTENT(IN)    :: YDGFLC2
816REAL(KIND=JPRB) :: ZHOOK_HANDLE
817
818IF (LHOOK) CALL DR_HOOK('GFL_SUBS:COPY_GFLC_GFLC',0,ZHOOK_HANDLE)
819YDGFLC1%CNAME     = YDGFLC2%CNAME
820YDGFLC1%IGRBCODE  = YDGFLC2%IGRBCODE
821YDGFLC1%LADV      = YDGFLC2%LADV
822YDGFLC1%NREQIN    = YDGFLC2%NREQIN
823YDGFLC1%REFVALI   = YDGFLC2%REFVALI
824YDGFLC1%LREQOUT   = YDGFLC2%LREQOUT
825YDGFLC1%LGPINGP   = YDGFLC2%LGPINGP
826YDGFLC1%LTRAJIO   = YDGFLC2%LTRAJIO
827YDGFLC1%LGP       = YDGFLC2%LGP
828YDGFLC1%LSP       = YDGFLC2%LSP
829YDGFLC1%LPT       = YDGFLC2%LPT
830YDGFLC1%LPC       = YDGFLC2%LPC
831YDGFLC1%LCDERS    = YDGFLC2%LCDERS
832YDGFLC1%LACTIVE   = YDGFLC2%LACTIVE
833YDGFLC1%LTHERMACT = YDGFLC2%LTHERMACT
834YDGFLC1%LT9       = YDGFLC2%LT9
835YDGFLC1%LT1       = YDGFLC2%LT1
836YDGFLC1%LT5       = YDGFLC2%LT5
837YDGFLC1%LPHY      = YDGFLC2%LPHY
838YDGFLC1%LADJUST0  = YDGFLC2%LADJUST0
839YDGFLC1%LADJUST1  = YDGFLC2%LADJUST1
840YDGFLC1%NCOUPLING = YDGFLC2%NCOUPLING
841YDGFLC1%REFVALC   = YDGFLC2%REFVALC
842YDGFLC1%LBIPER    = YDGFLC2%LBIPER
843YDGFLC1%CSLINT    = YDGFLC2%CSLINT
844YDGFLC1%R         = YDGFLC2%R
845YDGFLC1%RCP       = YDGFLC2%RCP
846YDGFLC1%MP        = YDGFLC2%MP
847YDGFLC1%MPL       = YDGFLC2%MPL
848YDGFLC1%MPM       = YDGFLC2%MPM
849YDGFLC1%MP9       = YDGFLC2%MP9
850YDGFLC1%MP1       = YDGFLC2%MP1
851YDGFLC1%MP5       = YDGFLC2%MP5
852YDGFLC1%MP5L      = YDGFLC2%MP5L
853YDGFLC1%MP5M      = YDGFLC2%MP5M
854YDGFLC1%MPSLP     = YDGFLC2%MPSLP
855YDGFLC1%MP_SPL    = YDGFLC2%MP_SPL
856YDGFLC1%MP_SL1    = YDGFLC2%MP_SL1
857YDGFLC1%MPSP      = YDGFLC2%MPSP
858YDGFLC1%MPPT      = YDGFLC2%MPPT
859YDGFLC1%MPPC      = YDGFLC2%MPPC
860!yt YDGFLC1%PREVIOUS => YDGFLC2%PREVIOUS
861IF (LHOOK) CALL DR_HOOK('GFL_SUBS:COPY_GFLC_GFLC',1,ZHOOK_HANDLE)
862
863END SUBROUTINE COPY_GFLC_GFLC
864
865!=========================================================================
866
867END MODULE GFL_SUBS
Note: See TracBrowser for help on using the repository browser.