summaryrefslogtreecommitdiff
path: root/Dragon/src/FLU.f
blob: 31c14ec6b40acd53f2efc92a08a5eb6886dc63f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
*DECK FLU
      SUBROUTINE FLU(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Multigroup flux solution in a lattice.
*
*Copyright:
* Copyright (C) 2002 Ecole Polytechnique de Montreal
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version
*
*Author(s): A. Hebert
*
*Parameters: input/output
* NENTRY  number of LCM objects or files used by the operator.
* HENTRY  name of each LCM object or file.
*         HENTRY(1) create or modification type(L_FLUX).
*         HENTRY(I) for I>1:
*         read-only type(L_MACROLIB or L_LIBRARY);
*         read-only type(L_TRACK);
*         read-only sequential binary tracking file;
*         read-only type(L_PIJ);
*         optional read-only type(L_FLUX) for unperturbed solution;
*         optional read-only type(L_SOURCE) for fixed sources.
* IENTRY  type of each LCM object or file:
*         =1 LCM memory object; =2 XSM file; =3 sequential binary file;
*         =4 sequential ascii file.
* JENTRY  access of each LCM object or file:
*         =0 the LCM object or file is created;
*         =1 the LCM object or file is open for modifications;
*         =2 the LCM object or file is open in read-only mode.
* KENTRY  LCM object address or file unit number.
*
*-----------------------------------------------------------------------
*
      USE GANLIB
*----
*  SUBROUTINE ARGUMENTS
*----
      INTEGER      NENTRY,IENTRY(NENTRY),JENTRY(NENTRY)
      TYPE(C_PTR)  KENTRY(NENTRY)
      CHARACTER    HENTRY(NENTRY)*12
*----
*  LOCAL VARIABLES
*----
      PARAMETER(IOUT=6,NSTATE=40,NLEAK=7,NSDIR=6)
      TYPE(C_PTR) IPFLUX,IPTRK,IPMACR,IPSYS,IPFLUP,IPSOU
      CHARACTER TEXT12*12,TITLE*72,CMODUL*12,HSIGN*12,COPTIO*4,
     1 CXDOOR*12,TYPE10*10,HISO10*10,CREBAL*3,CHLEAK*3,HTYPE(0:5)*8,
     2 CLEAK(NLEAK)*6,CSDIR(NSDIR)*1,HPTRK*12,HPMACR*12,HPSYS*12,
     3 HPFLUP*12,HPGPT*12,HSMG*131,REDUC(4)*3
      LOGICAL LTABLE,REC,LEAKSW,LFORW
      DOUBLE PRECISION REFKEF
      INTEGER ISTATE(NSTATE)
      REAL B2(4)
*----
*  ALLOCATABLE ARRAYS
*----
      INTEGER, ALLOCATABLE, DIMENSION(:) :: MATCOD,KEYFLX,IMERG
      REAL, ALLOCATABLE, DIMENSION(:) :: VOL
*----
*  DATA STATEMENTS
*----
      SAVE        HTYPE,CLEAK,CSDIR
      DATA       (HTYPE(JJ),JJ=0,5)/'  SOURCE','     GPT','   K-INF',
     >            '   K-EFF','BUCKLING',' LEAKAGE'/
      DATA       (CLEAK(JJ),JJ=1,NLEAK)
     >           /'PNLR',' PNL','SIGS','ALBS','HETE','ECCO','TIBERE'/
      DATA       (CSDIR(III),III=1,NSDIR)
     >           /'-','X','Y','Z','R','G'/
      DATA       (REDUC(JJ),JJ=1,4)
     >           /'ON ','OFF','ON ','OFF'/
*----
*  BICKLEY FLAG
*----
      SAVE IBICKL
      DATA IBICKL/0/
*----
*  PARAMETER VALIDATION.
*----
      IF(NENTRY.LE.1) CALL XABORT('FLU: TWO PARAMETERS EXPECTED.')
      IPFLUX=KENTRY(1)
      REC=(JENTRY(1).EQ.1)
      IF(REC) THEN
         CALL LCMGTC(IPFLUX,'SIGNATURE',12,HSIGN)
         IF(HSIGN.NE.'L_FLUX') THEN
            TEXT12=HENTRY(1)
            CALL XABORT('FLU: SIGNATURE OF '//TEXT12//' IS '//HSIGN//
     1      '. L_FLUX EXPECTED.')
         ENDIF
      ELSE
         HSIGN='L_FLUX'
         CALL LCMPTC(IPFLUX,'SIGNATURE',12,HSIGN)
      ENDIF
      IFTRAK=0
      IPMACR=C_NULL_PTR
      IPTRK=C_NULL_PTR
      IPSYS=C_NULL_PTR
      IPSOU=C_NULL_PTR
      IPFLUP=C_NULL_PTR
      HPTRK=' '
      HPMACR=' '
      HPSYS=' '
      DO 10 I1=2,NENTRY
      LTABLE=(IENTRY(I1).EQ.1).OR.(IENTRY(I1).EQ.2)
      IF((IENTRY(I1).EQ.3).AND.(JENTRY(I1).EQ.2)) THEN
        IFTRAK=FILUNIT(KENTRY(I1))
      ELSE IF(LTABLE.AND.(JENTRY(I1).EQ.2)) THEN
        CALL LCMGTC(KENTRY(I1),'SIGNATURE',12,HSIGN)
        IF((HSIGN.EQ.'L_TRACK').AND.(.NOT.C_ASSOCIATED(IPTRK))) THEN
          IPTRK=KENTRY(I1)
          HPTRK=HENTRY(I1)
        ELSE IF((HSIGN.EQ.'L_MACROLIB').AND.(.NOT.C_ASSOCIATED(IPMACR)))
     1  THEN
          IPMACR=KENTRY(I1)
          HPMACR=HENTRY(I1)
        ELSE IF((HSIGN.EQ.'L_LIBRARY').AND.(.NOT.C_ASSOCIATED(IPMACR)))
     1  THEN
          CALL LCMLEN(KENTRY(I1),'MACROLIB',ILONG,ITYLCM)
          IF(ILONG.NE.0) THEN
            IPMACR=KENTRY(I1)
            HPMACR=HENTRY(I1)
            CALL LCMSIX(IPMACR,'MACROLIB',1)
          ENDIF
        ELSE IF((HSIGN.EQ.'L_PIJ').AND.(.NOT.C_ASSOCIATED(IPSYS))) THEN
          IPSYS=KENTRY(I1)
          HPSYS=HENTRY(I1)
        ELSE IF((HSIGN.EQ.'L_FLUX').AND.(.NOT.C_ASSOCIATED(IPFLUP)))
     1  THEN
          IPFLUP=KENTRY(I1)
          HPFLUP=HENTRY(I1)
        ELSE IF((HSIGN.EQ.'L_SOURCE').AND.(.NOT.C_ASSOCIATED(IPSOU)))
     1  THEN
          IPSOU=KENTRY(I1)
          HPGPT=HENTRY(I1)
        ELSE
          WRITE(HSMG,'(20HFLU: UNKNOWN OBJECT ,A,14H OF SIGNATURE ,A,
     1    5H (1).)') TRIM(HENTRY(I1)),TRIM(HSIGN)
          CALL XABORT(HSMG)
        ENDIF
      ELSE
        WRITE(HSMG,'(20HFLU: UNKNOWN OBJECT ,A,1H.)') TRIM(HENTRY(I1))
        CALL XABORT(HSMG)
      ENDIF
   10 CONTINUE
      IF(.NOT.C_ASSOCIATED(IPTRK)) THEN
         CALL XABORT('FLU: NO TRACKING OBJECT AT RHS.')
      ELSE IF(.NOT.C_ASSOCIATED(IPMACR)) THEN
         CALL XABORT('FLU: NO MACROLIB OBJECT AT RHS.')
      ELSE IF(.NOT.C_ASSOCIATED(IPSYS)) THEN
         CALL XABORT('FLU: NO SYSTEM OBJECT AT RHS.')
      ENDIF
*----
*  RECOVER GENERAL TRACKING INFORMATION.
*----
      ISTATE(:NSTATE)=0
      CALL LCMGET(IPTRK,'STATE-VECTOR',ISTATE)
      NREG=   ISTATE(1)
      NUN=    ISTATE(2)
      LEAKSW= ISTATE(3).EQ.0
      IGP4=   ISTATE(4)
      NSOUT=  ISTATE(5)
*----
*  RECOVER MACROLIB PARAMETERS.
*----
      CALL LCMPTC(IPFLUX,'LINK.MACRO',12,HPMACR)
      ISTATE(:NSTATE)=0
      CALL LCMGET(IPMACR,'STATE-VECTOR',ISTATE)
      NGRP=   ISTATE(1)
      NMAT=   ISTATE(2)
      NANIS=  ISTATE(3)-1
      NIFIS=  ISTATE(4)
      ITRANC= ISTATE(6)
      LFORW = (ISTATE(13).EQ.0)
      IF(IGP4.GT.NMAT) THEN
         WRITE(HSMG,'(45HFLU: THE NUMBER OF MIXTURES IN THE TRACKING (,
     1   I5,55H) IS GREATER THAN THE NUMBER OF MIXTURES IN THE MACROLI,
     2   3HB (,I5,2H).)') IGP4,NMAT
         CALL XABORT(HSMG)
      ENDIF
*----
*  RECOVER INFORMATION FROM L_PIJ OBJECT.
*----
      ITPIJ=2
      IPHASE=1
      IF(C_ASSOCIATED(IPSYS)) THEN
         CALL LCMGTC(IPSYS,'LINK.MACRO',12,TEXT12)
         IF(HPMACR.NE.TEXT12) THEN
            WRITE(HSMG,'(37H FLU: INVALID MACROLIB OBJECT NAME ='',A12,
     1      18H'', EXPECTED NAME='',A12,2H''.)') HPMACR,TEXT12
            CALL XABORT(HSMG)
         ENDIF
         CALL LCMGTC(IPSYS,'LINK.TRACK',12,TEXT12)
         IF(HPTRK.NE.TEXT12) THEN
            WRITE(HSMG,'(37H FLU: INVALID TRACKING OBJECT NAME ='',A12,
     1      18H'', EXPECTED NAME='',A12,2H''.)') HPTRK,TEXT12
            CALL XABORT(HSMG)
         ENDIF
         CALL LCMPTC(IPFLUX,'LINK.TRACK',12,HPTRK)
         CALL LCMPTC(IPFLUX,'LINK.SYSTEM',12,HPSYS)
         CALL LCMGET(IPSYS,'STATE-VECTOR',ISTATE)
         ITPIJ=ISTATE(1)
         IPHASE=ISTATE(5)
         IF(ISTATE(8).NE.NGRP) CALL XABORT('FLU: INVALID NUMBER OF ENE'
     1   //'RGY GROUPS.')
         IF(ISTATE(10).GT.NMAT) CALL XABORT('FLU: INVALID NUMBER OF MI'
     1   //'XTURES.')
         IF(LEAKSW) THEN
            IF((ISTATE(2).EQ.0).OR.(ISTATE(3).EQ.0)) LEAKSW=.FALSE.
         ENDIF
      ELSE
         CALL LCMPTC(IPFLUX,'LINK.TRACK',12,HPTRK)
      ENDIF
*----
*  INITIALISE/READ ITERATIONS PARAMETERS
*----
      IF(NREG.EQ.0) CALL XABORT('FLU: NREG = 0')
      ALLOCATE(IMERG(NMAT))
      CALL FLUGPI(IPFLUX,IPMACR,ITYPEC,MAXOUT,MAXINR,EPSOUT,EPSUNK,
     1 EPSINR,IREBAL,IFRITR,IACITR,COPTIO,ILEAK,B2,NGRP,NREG,NMAT,
     2 NIFIS,LEAKSW,REFKEF,ITPIJ,IPRINT,REC,INITFL,NMERG,IMERG)
      IF(IPHASE.EQ.2) THEN
        IF((ILEAK.GE.7).AND.(ITPIJ.LT.3)) CALL XABORT('FLU: HETEROGE'//
     >  'NEOUS BUCKLING CALCULATIONS REQUIRE PIJK EVALUATION IN ASM:')
      ENDIF 
*----
*  RECOVER TRACKING FILE INFORMATION.
*----
      CALL LCMGTC(IPTRK,'TRACK-TYPE',12,CMODUL)
      CALL LCMGET(IPTRK,'STATE-VECTOR',ISTATE)
      IF(IPHASE.EQ.1) THEN
        CXDOOR=CMODUL
      ELSE
        CXDOOR='TRAFIC'
        IF(.NOT.C_ASSOCIATED(IPSYS)) CALL XABORT('FLU: NO PIJ OBJECT A'
     1  //'T RHS.')
      ENDIF
      IF(CXDOOR.EQ.'MCCG') THEN
         NLF=ISTATE(6)
         NANI=ISTATE(6)
      ELSE IF(CXDOOR.EQ.'BIVAC')  THEN
         NLF=MAX(1,ISTATE(14))
         NANI=MAX(1,ISTATE(16))
      ELSE IF(CXDOOR.EQ.'TRIVAC') THEN
         NLF=MAX(1,ISTATE(30))
         NANI=MAX(1,ISTATE(32))
      ELSE IF(CXDOOR.EQ.'SN') THEN
         NLF=ISTATE(15)
         NANI=MAX(1,ISTATE(16))
      ELSE
         NLF=1
         NANI=1
      ENDIF
      IF(ITYPEC.EQ.1) THEN
        IF(.NOT.C_ASSOCIATED(IPFLUP)) CALL XABORT('FLU: NO UNPERTURBED'
     1  //'FLUX OBJECT AT RHS.')
        CALL LCMGTC(IPFLUP,'TRACK-TYPE',12,TEXT12)
        IF(TEXT12.NE.CMODUL) THEN
          WRITE(HSMG,'(44HFLU: INCONSISTENT UNPERTURBED FLUX TRACK-TYP,
     1    10HE AT RHS (,A,3H). ,A,10H EXPECTED.)') TRIM(TEXT12),
     2    TRIM(CMODUL)
          CALL XABORT(HSMG)
        ENDIF
        IF(.NOT.C_ASSOCIATED(IPSOU)) CALL XABORT('FLU: NO SOURCE OBJEC'
     1  //'T AT RHS.')
        CALL LCMGTC(IPSOU,'TRACK-TYPE',12,TEXT12)
        IF(TEXT12.NE.CMODUL) THEN
          WRITE(HSMG,'(44HFLU: INCONSISTENT SOURCE OBJECT TRACK-TYPE A,
     1    7HT RHS (,A,3H). ,A,10H EXPECTED.)') TRIM(TEXT12),TRIM(CMODUL)
          CALL XABORT(HSMG)
        ENDIF
      ENDIF
      IF(REC) THEN
        CALL LCMGTC(IPFLUX,'TRACK-TYPE',12,TEXT12)
        IF(TEXT12.NE.CMODUL) THEN
          WRITE(HSMG,'(44HFLU: INCONSISTENT FLUX OBJECT TRACK-TYPE AT ,
     1    5HRHS (,A,3H). ,A,10H EXPECTED.)') TRIM(TEXT12),TRIM(CMODUL)
          CALL XABORT(HSMG)
        ENDIF
      ENDIF
      CALL LCMPTC(IPFLUX,'TRACK-TYPE',12,CMODUL)
*----
*  CHECK FOR THE ANISOTROPY SETTINGS COHERENCE
*----
      IF((ITRANC.NE.0).AND.(NANI.GT.1)) THEN
         WRITE(IOUT,6400) CXDOOR,NANI
         ITRANC=0
      ENDIF
*----
*  RECOVER TABULATED FUNCTIONS FOR THE METHOD OF CHARACTERISTICS.
*----
      IF((CXDOOR.EQ.'MCCG').AND.(IBICKL.EQ.0)) THEN
        CALL XDRTA2
        IBICKL=1
      ENDIF
*----
*  THE NUMBER OF UNKNOWNS OF A CURRENT-BASED MULTICELL ITERATION IS
*  INCREASED TO HOLD INTERFACE CURRENT COMPONENTS.
*----
      IF(IPHASE.EQ.1) THEN
        IF(CXDOOR.EQ.'SYBIL') NUN=NUN+ISTATE(9)
        IF((CXDOOR.EQ.'EXCELL').AND.(ISTATE(7).EQ.5)) NUN=NUN+ISTATE(28)
      ENDIF
*----
*  THE NUMBER OF UNKNOWNS IS MULTIPLIED BY 2 WITH THE ECCO-TYPE
*  ISOTROPIC STREAMING MODEL AND BY 4 FOR PIJ AND 8 FOR MOC WITH THE
*  TIBERE ANISOTROPIC STREAMING MODEL. THE EXTRA-LOCATIONS ARE USED TO
*  STORE THE HETEROGENEOUS FUNDAMENTAL CURRENT VALUES.
*----
      IF(ILEAK.EQ.6) NUN=NUN*2
      IF(ILEAK.GE.7) THEN
        IF (CXDOOR.EQ.'MCCG')THEN
          NUN=NUN*8
        ELSE
          NUN=NUN*4
        ENDIF
      ENDIF  
*----
*  PRINT REQUIRED INFORMATION
*----
      IF(IPRINT.GE.1) THEN
        IF(LFORW) THEN
          TYPE10='    DIRECT'
        ELSE
          TYPE10='   ADJOINT'
        ENDIF
        IF(NLF.EQ.1 ) THEN
          HISO10=' ISOTROPIC'
        ELSE
          HISO10=' ANISOTROP'
        ENDIF
        WRITE(IOUT,6010) HTYPE(ITYPEC),TYPE10,HISO10
        IF(ITYPEC.EQ.3) THEN
            WRITE(IOUT,6011) COPTIO,CLEAK(MOD(ILEAK,10)),' IMPOSED'
            IF(ILEAK.LT.7) THEN
              WRITE(IOUT,6012) B2(4)
            ELSE
              WRITE(IOUT,6013) B2(1),B2(2),B2(3)
            ENDIF
        ELSE IF(ITYPEC.GT.3) THEN
          IF(ILEAK.LT.7) THEN
            WRITE(IOUT,6011) COPTIO,CLEAK(ILEAK),'G SEARCH'
            WRITE(IOUT,6012) B2(4)
          ELSE
            WRITE(IOUT,6011) COPTIO,CLEAK(7),CSDIR(ILEAK/10)//' SEARCH'
            WRITE(IOUT,6013) B2(1),B2(2),B2(3)
          ENDIF
        ENDIF
        CREBAL='ON '
        IF(IREBAL.EQ.0) CREBAL='OFF'
        CHLEAK='ON '
        IF(LEAKSW) CHLEAK='OFF'
        WRITE(IOUT,6000) CXDOOR,NGRP,NREG,NUN,NMERG,MAXOUT,MAXINR,
     >                   IFRITR,IACITR,CREBAL,REDUC(ITPIJ),CHLEAK,
     >                   EPSOUT,EPSUNK,EPSINR
        IF(ITRANC.GT.0) WRITE(IOUT,6100)
      ENDIF
*----
*  RECOVER SPECIFIC TRACKING INFORMATION.
*----
      IF(CXDOOR.EQ.'MCCG') THEN
         CALL LCMGET(IPTRK,'MCCG-STATE',ISTATE)
         NFUNL=ISTATE(19)
         NLIN=ISTATE(20)
      ELSE IF(CXDOOR.EQ.'SN') THEN
         CALL LCMGET(IPTRK,'STATE-VECTOR',ISTATE)
         NFUNL=ISTATE(7)
         NLIN=ISTATE(8)
         NDIM=ISTATE(9)
         NLIN=NLIN**NDIM
         NLIN=NLIN*ISTATE(35)
      ELSE
         NFUNL=1
         NLIN=1
      ENDIF
      ALLOCATE(MATCOD(NREG),VOL(NREG),KEYFLX(NREG*NLIN*NFUNL))
      KEYFLX(:NREG*NLIN*NFUNL)=0
      CALL LCMLEN(IPTRK,'MATCOD',ILNLCM,ITYLCM)
      IF(ILNLCM.NE.NREG) 
     1   CALL XABORT( 'FLU: INCOMPATIBLE NUMBER OF REGIONS.')
      CALL LCMGET(IPTRK,'MATCOD',MATCOD)
      CALL LCMGET(IPTRK,'VOLUME',VOL)
      IF((CXDOOR.EQ.'MCCG').OR.(CXDOOR.EQ.'SN')) THEN
         CALL LCMGET(IPTRK,'KEYFLX$ANIS',KEYFLX)
      ELSE
         CALL LCMGET(IPTRK,'KEYFLX',KEYFLX)
      ENDIF
      CALL LCMLEN(IPTRK,'TITLE',ILNLCM,ITYLCM)
      IF( ILNLCM.GT.0 )THEN
         CALL LCMGTC(IPTRK,'TITLE',72,TITLE)
      ELSE
         TITLE='*** NO TITLE PROVIDED ***'
      ENDIF
*----
*  COMPUTE THE FLUX.
*----
      IF(ITYPEC.EQ.1) THEN
*       FIXED SOURCE EIGENVALUE PROBLEM
        CALL FLUGPT(IPRINT,IPFLUX,IPTRK,IPMACR,IPFLUP,IPSOU,IFTRAK,
     1  IPSYS,IPHASE,ITPIJ,CXDOOR,TITLE,INITFL,LFORW,LEAKSW,IREBAL,
     2  NGRP,NMAT,NIFIS,NANIS,NLF,NLIN,NFUNL,COPTIO,NUN,MAXINR,EPSINR,
     3  MAXOUT,EPSUNK,EPSOUT,IFRITR,IACITR,ILEAK,NREG,NSOUT,MATCOD,
     4  KEYFLX,VOL,REFKEF,NMERG,IMERG)
      ELSE
        CALL FLUDRV(IPRINT,IPFLUX,IPTRK,IPMACR,IPSOU,IFTRAK,IPSYS,
     1  IPHASE,ITPIJ,CXDOOR,ITRANC,TITLE,B2,INITFL,LFORW,LEAKSW,IREBAL,
     2  NGRP,NMAT,NIFIS,NANIS,NLF,NLIN,NFUNL,COPTIO,NUN,MAXINR,EPSINR,
     3  MAXOUT,EPSUNK,EPSOUT,IFRITR,IACITR,ITYPEC,ILEAK,NREG,NSOUT,
     4  MATCOD,KEYFLX,VOL,REFKEF,NMERG,IMERG)
      ENDIF
*----
*  RELEASE GENERAL TRACKING INFORMATION.
*----
      DEALLOCATE(IMERG)
      DEALLOCATE(KEYFLX,VOL,MATCOD)
      CALL LCMSIX(IPMACR,' ',0)
      RETURN
*
6000  FORMAT(' FLUX SOLUTION DOOR          = ** ',A6,' **'/
     > ' NB. OF GROUPS               =',I10/
     > ' NB. OF REGIONS              =',I10/
     > ' NB. OF UNKNOWNS PER GROUP   =',I10/
     > ' NB. OF LEAKAGE ZONES        =',I10/
     > ' MAX. OUTER ITERATIONS       =',I10/
     > ' MAX. THERMAL ITERATIONS     =',I10/
     > ' ACCELERATION SCHEME         =(',I2,' FREE,',I2,' ACCELERATED)'/
     > ' REBALANCING OPTION          = ',A3/
     > ' SELF-SCATTERING REDUCTION   = ',A3/
     > ' FUNDAMENTAL MODE            = ',A3/
     > ' EIGENVALUE TOLERANCE        = ',1P,E10.3/
     > ' UNKNOWN OUTER TOLERANCE     = ',E10.3/
     > ' UNKNOWN INNER TOLERANCE     = ',E10.3/)
6010  FORMAT(////' P. I. M.    SOLUTION TO TRANSPORT EQUATION',//
     > ' CALCULATION TYPE            =',2X,A8/
     > ' FORWARD/BACKWARD OPTION     =',A10/
     > ' (AN)ISOTROPY OPTION         =',A10)
6011  FORMAT(' LEAKAGE TYPE                =',6X,A4/
     > ' LEAKAGE OPTION              =',6X,A6/
     > ' BUCKLING                    =',2X,A8)
6012  FORMAT(' INITIAL TOTAL BUCKLING      =',1P,E13.5)
6013  FORMAT(' INITIAL BUCKLING - X        =',1P,E13.5/
     >       ' INITIAL BUCKLING - Y        =',1P,E13.5/
     >       ' INITIAL BUCKLING - Z        =',1P,E13.5)
6100  FORMAT(/' USE TRANSPORT CORRECTED CROSS-SECTIONS')
6400  FORMAT(//' *** WARNING:  DOOR ',A12,'IS USED WITH AN ANISOTROPY',
     > ' LEVEL FROM L_TRACK =',I2,' AND WITH A TRANSPORT CORRECTION S',
     > 'ET IN LIB:.'/15X,'--> THE TRANSPORT CORRECTION IS DISABLED.'/)
      END