summaryrefslogtreecommitdiff
path: root/Dragon/src/LIBAPL.f
diff options
context:
space:
mode:
Diffstat (limited to 'Dragon/src/LIBAPL.f')
-rw-r--r--Dragon/src/LIBAPL.f1000
1 files changed, 1000 insertions, 0 deletions
diff --git a/Dragon/src/LIBAPL.f b/Dragon/src/LIBAPL.f
new file mode 100644
index 0000000..24efbcb
--- /dev/null
+++ b/Dragon/src/LIBAPL.f
@@ -0,0 +1,1000 @@
+*DECK LIBAPL
+ SUBROUTINE LIBAPL (IPLIB,NAMFIL,MAXTRA,NGRO,NBISO,NL,ISONAM,
+ 1 ISONRF,IPISO,ISHINA,MASKI,TN,SN,SB,IMPX,NGF,NGFR)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Transcription of the useful interpolated microscopic cross section
+* data from APOLIB-1 to LCM data structures.
+*
+*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
+* IPLIB pointer to the lattice microscopic cross section library
+* (L_LIBRARY signature).
+* NAMFIL name of the apolib file.
+* MAXTRA available storage for apollo compacted
+* transfer cross sections.
+* NGRO number of energy groups.
+* NBISO number of isotopes present in the calculation domain.
+* NL number of Legendre orders required in the calculation
+* NL=1 or higher.
+* ISONAM alias name of isotopes.
+* ISONRF library reference name of isotopes.
+* IPISO pointer array towards microlib isotopes.
+* ISHINA self-shielding name.
+* MASKI isotopic mask. Isotope with index I is processed if
+* MASKI(I)=.true.
+* TN temperature of each isotope.
+* SN dilution cross section in each energy group of each.
+* isotope. a value of 1.0E10 is used for infinite dilution.
+* SB dilution cross section as used by Livolant and Jeanpierre
+* normalization.
+* IMPX print flag.
+*
+*Parameters: output
+* NGF number of fast groups without self-shielding.
+* NGFR number of fast and resonance groups.
+*
+*Reference:
+* A. Hoffmann, F. Jeanpierre, A. Kavenoky, M. Livolant AND H. Lorain,
+* 'APOLLO - Code multigroupe de resolution de l'equation du transport
+* pour les neutrons thermiques et rapides', Rapport SERMA 'T' No.
+* 1 193, Commissariat a l'Energie Atomique, Saclay (1973).
+*
+*-----------------------------------------------------------------------
+*
+ USE GANLIB
+*----
+* SUBROUTINE ARGUMENTS
+*----
+ PARAMETER(MAXQUA=11,MAXDIL=60)
+ CHARACTER*(*) NAMFIL
+ TYPE(C_PTR) IPLIB,IPISO(NBISO)
+ INTEGER MAXTRA,NGRO,NBISO,NL,ISONAM(3,NBISO),ISONRF(3,NBISO),
+ 1 ISHINA(3,NBISO),IMPX,NGF,NGFR
+ REAL TN(NBISO),SN(NGRO,NBISO),SB(NGRO,NBISO)
+ LOGICAL MASKI(NBISO)
+*----
+* LOCAL VARIABLES
+*----
+ CHARACTER FORM*4,HVEC(5)*6,HSMG*131,HNISOR*12,HSHI*12,HNAMIS*12
+ PARAMETER (NSYSO=6,MAXIT=1000,MAXVEC=11,MAXTMP=40)
+ TYPE(C_PTR) KPLIB
+ LOGICAL NOTG,LEXC,LALL,LALL2,LALBIS
+ DOUBLE PRECISION X1,X2,DDE,ENER,TMP
+ INTEGER IANIS(80),ITY(80),NEXT(80),NEXU(80),NEXV(80),NEXW(80),
+ 1 III(80),IT(MAXIT),ITYPE(MAXVEC),ITYSEC(MAXVEC),TIT(18),NTETA(4),
+ 2 NSE(4)
+ REAL TETAB(MAXTMP),SIGE(MAXDIL,4),SEAUX(MAXDIL,150),XE(MAXDIL),
+ 1 GE(MAXDIL)
+ EQUIVALENCE(AA,NN)
+*----
+* ALLOCATABLE ARRAYS
+*----
+ INTEGER, ALLOCATABLE, DIMENSION(:) :: NISB,NISBEF,ITYPRO
+ INTEGER, ALLOCATABLE, DIMENSION(:,:) :: IPR
+ REAL, ALLOCATABLE, DIMENSION(:) :: AWR,VECT,SIG1,SIGA,SIGF,
+ 1 PRI,VTHER,SSS,SSS1,SS1,SS11,UUU,DELTA
+ REAL, ALLOCATABLE, DIMENSION(:,:) :: SIGS,PHI,PP,PP1
+ REAL, ALLOCATABLE, DIMENSION(:,:,:) :: SCAT,SEFF
+ LOGICAL, ALLOCATABLE, DIMENSION(:) :: LINF
+*----
+* SCRATCH STORAGE ALLOCATION
+*----
+ ALLOCATE(IPR(4,NBISO),NISB(NBISO),NISBEF(NBISO),ITYPRO(NL))
+ ALLOCATE(AWR(NBISO),VECT(NGRO+1),SIGS(NGRO,NL),SIG1(NGRO),
+ 1 SIGA(NGRO),SIGF(NGRO),PRI(MAXTRA),VTHER(NGRO),PHI(NGRO,MAXQUA),
+ 2 PP(NGRO,NGRO+1),PP1(NGRO,NGRO+1),SSS(NGRO),SSS1(NGRO),SS1(NGRO),
+ 3 SS11(NGRO),UUU(NGRO),DELTA(NGRO),SCAT(NGRO,NGRO,NL),
+ 4 SEFF(MAXDIL,NGRO,4))
+ ALLOCATE(LINF(NGRO))
+*
+ IQUAN=0
+ X1=0.0D0
+ X2=0.0D0
+ NGF=NGRO+1
+ NGFR=0
+ DO 10 IMX=1,NBISO
+ IPR(1,IMX)=0
+ HSHI=' '
+ IF(MASKI(IMX)) THEN
+ WRITE(HSHI,'(3A4)') (ISHINA(I0,IMX),I0=1,3)
+ WRITE(HNISOR,'(3A4)') (ISONRF(I0,IMX),I0=1,3)
+ I=INDEX(HNISOR,' ')
+ IF(I.EQ.0) THEN
+ READ(HNISOR,'(I8)') NISB(IMX)
+ ELSE
+ WRITE(FORM,'(2H(I,I1,1H))') I-1
+ READ(HNISOR,FORM) NISB(IMX)
+ ENDIF
+ I=INDEX(HSHI,' ')
+ IF(HSHI.EQ.' ') THEN
+ NISBEF(IMX)=0
+ ELSE IF(I.EQ.0) THEN
+ READ(HSHI,'(I8)') NISBEF(IMX)
+ ELSE
+ WRITE(FORM,'(2H(I,I1,1H))') I-1
+ READ(HSHI,FORM) NISBEF(IMX)
+ ENDIF
+ ENDIF
+ IF(HSHI.EQ.' ') THEN
+ IPR(2,IMX)=1
+ ELSE
+ IPR(2,IMX)=0
+ ENDIF
+ IPR(3,IMX)=0
+ IPR(4,IMX)=0
+ 10 CONTINUE
+ IF(IMPX.GT.0) WRITE(NSYSO,890) NAMFIL
+ NIN=KDROPN(NAMFIL,2,2,0)
+ IF(NIN.LE.0) THEN
+ WRITE(HSMG,'(36HLIBAPL: UNABLE TO OPEN LIBRARY FILE ,A16,
+ 1 6H. NIN=,I4,1H.)') NAMFIL,NIN
+ CALL XABORT(HSMG)
+ ENDIF
+*----
+* RECOVER THE GROUP STRUCTURE
+*----
+ 20 READ(NIN) INDLOR,NR,NIT,(IT(I),I=1,NIT)
+ IF(INDLOR.EQ.9999) THEN
+ WRITE(NSYSO,940)
+ CALL LCMGET(IPLIB,'DELTAU',DELTA)
+ CALL LCMGET(IPLIB,'ENERGY',VECT)
+ E0=1.0E-6*VECT(1)
+ DO 25 I=1,NGRO
+ UUU(I)=LOG(VECT(1)/VECT(I+1))
+ 25 CONTINUE
+ ELSE IF(IT(3).EQ.0) THEN
+ DO 30 K=1,NR
+ READ(NIN)
+ 30 CONTINUE
+ GO TO 20
+ ELSE
+ READ(NIN) E0,DEL,(UUU(I),I=1,NGRO),(DELTA(I),I=1,NGRO)
+ NR1=NR-1
+ VECT(1)=1.0E6*E0
+ DO 40 I=1,NGRO
+ VECT(I+1)=1.0E6*E0*EXP(-UUU(I))
+ 40 CONTINUE
+ CALL LCMPUT(IPLIB,'ENERGY',NGRO+1,2,VECT)
+ CALL LCMPUT(IPLIB,'DELTAU',NGRO,2,DELTA)
+ ENDIF
+*----
+* ***MATERIAL/ISOTOPE LOOP***
+*----
+ NED=0
+ LALBIS=.TRUE.
+ 45 NOTG=.TRUE.
+ REWIND(NIN)
+ NTITLE=18
+ 50 READ(NIN) INDLOR,NR,NIT,(IT(I),I=1,NIT),(TIT(I),I=1,NTITLE)
+ IF(NIT.GT.MAXIT) THEN
+ WRITE(HSMG,960) 'MAXIT'
+ CALL XABORT(HSMG)
+ ENDIF
+ IF(INDLOR.EQ.9999) GO TO 740
+ IMAIL=IT(1)
+ IF(IMAIL.EQ.99) THEN
+ IX=47
+ ELSE IF(IMAIL.EQ.142) THEN
+ IX=60
+ ELSE IF(IMAIL.EQ.172) THEN
+ IX=80
+ ELSE
+ WRITE(HSMG,'(45HLIBAPL: INCONSISTENT GROUP STRUCTURES. IT(1)=,
+ 1 I5)') IMAIL
+ CALL XABORT(HSMG)
+ ENDIF
+ LALL=.TRUE.
+ LALL2=LALBIS
+ DO 70 IMX=1,NBISO
+ IF(MASKI(IMX)) THEN
+ IMT=IMX
+ LALL=LALL.AND.(IPR(1,IMX).EQ.1).AND.(IPR(2,IMX).EQ.1)
+ LALL2=LALL2.AND.(IPR(1,IMX).EQ.1)
+ IF((INDLOR.EQ.NISB(IMX)).AND.(IPR(1,IMX).EQ.0)) GO TO 90
+ IF((INDLOR.EQ.NISBEF(IMX)).AND.(IPR(1,IMX).EQ.1).AND.
+ 1 (IPR(2,IMX).EQ.0)) GO TO 500
+ ENDIF
+ 70 CONTINUE
+ IF(LALL) THEN
+ GO TO 740
+ ELSE IF(LALL2) THEN
+ LALBIS=.FALSE.
+ GO TO 45
+ ELSE
+ DO 80 K=1,NR
+ READ(NIN)
+ 80 CONTINUE
+ GO TO 50
+ ENDIF
+*----
+* MATERIAL CONTROL
+*----
+ 90 IPR(1,IMT)=1
+ NOTG=.FALSE.
+ NR1=NR
+ IF(IT(2).NE.NGRO) CALL XABORT('LIBAPL: INCONSISTENT GROUP STRUC'
+ 1 //'TURES.')
+ IF(IT(3).NE.0) THEN
+ READ(NIN)
+ NR1=NR-1
+ ENDIF
+ NRST=IT(4)
+ KPLIB=IPISO(IMT) ! set IMT-th isotope
+ DO 106 J=1,NGRO
+ SIG1(J)=0.0
+ SIGA(J)=0.0
+ SIGF(J)=0.0
+ DO 105 IL=1,NL
+ SIGS(J,IL)=0.0
+ 105 CONTINUE
+ 106 CONTINUE
+ NTYPE=0
+ NS1=0
+ DO 205 IRST=1,NRST
+ IF(IRST.GT.1) THEN
+ IQUAN=1
+ ITYSEC(1)=IT(4+NS1+IRST)
+ ELSE IF(IT(5).GT.0) THEN
+ IQUAN=1
+ ITYSEC(1)=IT(5)
+ ELSE IF(IT(5).EQ.0) THEN
+ IQUAN=4
+ ITYSEC(1)=1
+ ITYSEC(2)=2
+ ITYSEC(3)=3
+ ITYSEC(4)=4
+ ELSE IF(IT(5).LT.0) THEN
+ NS1=-IT(5)
+ IQUAN=NS1
+ DO 110 I=1,IQUAN
+ ITYSEC(I)=IT(5+I)
+ 110 CONTINUE
+ ENDIF
+ IF(IQUAN.GT.MAXQUA) CALL XABORT('LIBAPL: MAXQUA TOO SMALL.')
+ READ(NIN)((PHI(J,ISEC),J=1,NGRO),ISEC=1,IQUAN)
+ NR1=NR1-1
+ DO 200 ISEC=1,IQUAN
+ IMMOND=ITYSEC(ISEC)
+ DO 120 I=1,NTYPE
+ IF(IMMOND.EQ.ITYPE(I)) GO TO 200
+ 120 CONTINUE
+ IF(IMPX.GT.7) THEN
+ WRITE(NSYSO,920) NISB(IMT),IRST,IMMOND
+ WRITE(NSYSO,930) (PHI(J,ISEC),J=1,NGRO)
+ ENDIF
+ NTYPE=NTYPE+1
+ ITYPE(NTYPE)=IMMOND
+ IF(IMMOND.EQ.1) THEN
+ DO 140 J=1,NGRO
+ SIGS(J,1)=PHI(J,ISEC)
+ 140 CONTINUE
+ ELSE IF(IMMOND.EQ.2) THEN
+ DO 150 J=1,NGRO
+ SIGA(J)=PHI(J,ISEC)
+ 150 CONTINUE
+ ELSE IF(IMMOND.EQ.3) THEN
+ CALL LCMPUT(KPLIB,'NUSIGF',NGRO,2,PHI(1,ISEC))
+ ELSE IF(IMMOND.EQ.4) THEN
+ DO 155 J=1,NGRO
+ PHI(J,ISEC)=PHI(J,ISEC)*DELTA(J)
+ 155 CONTINUE
+ CALL LCMPUT(KPLIB,'CHI',NGRO,2,PHI(1,ISEC))
+ ELSE IF(IMMOND.EQ.5) THEN
+ CALL LCMPUT(KPLIB,'NG',NGRO,2,PHI(1,ISEC))
+ IPR(3,IMT)=1
+ DO 160 I=1,NED
+ IF(HVEC(I).EQ.'NG') GO TO 200
+ 160 CONTINUE
+ NED=NED+1
+ HVEC(NED)='NG'
+ ELSE IF(IMMOND.EQ.6) THEN
+ CALL LCMPUT(KPLIB,'NFTOT',NGRO,2,PHI(1,ISEC))
+ IPR(4,IMT)=1
+ DO 170 I=1,NED
+ IF(HVEC(I).EQ.'NFTOT') GO TO 200
+ 170 CONTINUE
+ NED=NED+1
+ HVEC(NED)='NFTOT'
+ ELSE IF(IMMOND.EQ.10) THEN
+ DO 180 J=1,NGRO
+ SIG1(J)=PHI(J,ISEC)
+ 180 CONTINUE
+ ELSE IF(IMMOND.EQ.11) THEN
+ DO 185 J=1,NGRO
+ VECT(J)=1.0/(3.0*PHI(J,ISEC))
+ 185 CONTINUE
+ CALL LCMPUT(KPLIB,'STRD',NGRO,2,VECT)
+ DO 190 I=1,NED
+ IF(HVEC(I).EQ.'STRD') GO TO 200
+ 190 CONTINUE
+ NED=NED+1
+ HVEC(NED)='STRD'
+ ELSE
+ WRITE(NSYSO,920) NISB(IMT),IRST,IMMOND
+ CALL XABORT('LIBAPL: UNKNOWN REACTION TYPE.')
+ ENDIF
+ 200 CONTINUE
+ 205 CONTINUE
+*----
+* SCATTERING MATRIX CONTROL
+*----
+ ITH=0
+ IMAT=0
+ IC=5+NS1+NRST
+ NRSTR=IT(IC)
+ ICC=IC+6*NRSTR+1
+ NN=IT(ICC)
+ AWR(IMT)=AA
+ NN=IT(ICC+1)
+ AT=AA
+ NKDEB=1
+ IIIC=1
+*
+ IF(NRSTR.EQ.0)GO TO 380
+ IC=IC-5
+ ITH=0
+ IMAT=0
+ IMAT1=0
+ ITROUV=0
+ IMAT0=0
+ DO 290 IS=1,NRSTR
+ IC=IC+6
+ IF(IT(IC).GT.NL-1) GO TO 280
+ IF(IT(IC+1).EQ.7) THEN
+* DO TEMPERATURE INTERPOLATION FOR THE THERMAL TRANSFER MATRICES.
+ IF(IX.NE.IT(IC+3)) THEN
+ WRITE(NSYSO,950) IX,IT(IC+3)
+ IX=IT(IC+3)
+ ENDIF
+ IF(IT(IC).EQ.1) IMAT1=IMAT1+1
+ IF(IMAT1.EQ.1) THEN
+ IMAT=0
+ ITROUV=0
+ ENDIF
+ ITH=1
+ TEMPI=REAL(IT(IC+5))+0.16
+ TEMPA=TN(IMT)
+ IMAT=IMAT+1
+ IF(ITROUV.NE.0) GO TO 280
+ ITEST=(IMAT/2)*2-IMAT
+ IF(ITEST.NE.0) THEN
+ READ(NIN)((PP1(K,J),K=1,IX),J=1,IX),(SSS1(K),K=1,IX),
+ 1 (SS11(K),K=1,IX)
+ NR1=NR1-1
+ X1=TEMPI
+ ELSE
+ IF(IT(IC).EQ.0) THEN
+ READ(NIN)((PP(K,J),K=1,IX),J=1,IX),(SSS(K),K=1,IX),
+ 1 (SS1(K),K=1,IX)
+ NR1=NR1-1
+ X2=TEMPI
+ ELSE
+ READ(NIN)((PP(K,J),K=1,IX),J=1,IX),(SSS1(K),K=1,IX),
+ 1 (SS11(K),K=1,IX)
+ NR1=NR1-1
+ X2=TEMPI
+ ENDIF
+ ENDIF
+ IF(IMAT.EQ.1)GO TO 290
+ XX=REAL((TEMPA-X1)*(TEMPA-X2))
+ IF(XX.LE.0.)ITROUV=1
+ IF((TEMPA.LE.TEMPI).AND.(IMAT.EQ.2))ITROUV=1
+ IF(IT(IC+6).EQ.1.AND.IT(IC).NE.1)IMAT0=IMAT
+ IF(IMAT.EQ.IMAT0)ITROUV=1
+ IF(ITROUV.NE.1)GO TO 290
+ XX=REAL((TEMPA-X1)/(X1-X2))
+ IF(IMAT.EQ.1)XX=0.
+ I2=IIIC+IX*IX-1
+ IF(I2.GT.MAXTRA) THEN
+ WRITE(HSMG,960) 'MAXTRA'
+ CALL XABORT(HSMG)
+ ENDIF
+ IF(IT(IC).EQ.0) THEN
+ DO 215 K=1,IX
+ SSS(K)=SSS1(K)+(SSS1(K)-SSS(K))*XX
+ KI=NGRO-K+1
+ SS1(K)=SS11(K)+(SS11(K)-SS1(K))*XX
+ DO 210 J=1,IX
+ KJ=NGRO-J+1
+ PP(J,K)=PP1(J,K)+(PP1(J,K)-PP(J,K))*XX
+ 210 CONTINUE
+ 215 CONTINUE
+ DO 225 J=1,IX
+ DO 220 K=1,IX
+ PRI(IIIC+(J-1)*IX+K-1)=PP(J,K)
+ 220 CONTINUE
+ 225 CONTINUE
+ ELSE
+* ANISOTROPES
+ DO 245 K=1,IX
+ KI=NGRO-K+1
+ DO 240 J=1,IX
+ KJ=NGRO-J+1
+ PP1(J,K)=PP1(J,K)+(PP1(J,K)-PP(J,K))*XX
+ 240 CONTINUE
+ 245 CONTINUE
+ DO 255 J=1,IX
+ DO 250 K=1,IX
+ PRI(IIIC+(J-1)*IX+K-1)=PP1(J,K)
+ 250 CONTINUE
+ 255 CONTINUE
+ ENDIF
+ IANIS(NKDEB)=IT(IC)
+ ITY(NKDEB)=7
+ NEXT(NKDEB)=IX*IX
+ NEXU(NKDEB)=IX
+ NEXV(NKDEB)=IX
+ NEXW(NKDEB)=INT(TEMPA)
+ ELSE
+ IANIS(NKDEB)=IT(IC)
+ ITY(NKDEB)=IT(IC+1)
+ NEXT(NKDEB)=IT(IC+2)
+ NEXU(NKDEB)=IT(IC+3)
+ NEXV(NKDEB)=IT(IC+4)
+ NEXW(NKDEB)=IT(IC+5)
+ I2=IIIC+NEXT(NKDEB)-1
+ IF(I2.GE.IIIC) THEN
+ IF(I2.GT.MAXTRA) THEN
+ WRITE(HSMG,960) 'MAXTRA'
+ CALL XABORT(HSMG)
+ ENDIF
+ READ(NIN)(PRI(J),J=IIIC,I2)
+ NR1=NR1-1
+ ENDIF
+ ENDIF
+ III(NKDEB)=IIIC
+ IIIC=I2+1
+ NKDEB=NKDEB+1
+ GOTO 290
+ 280 READ(NIN)
+ NR1=NR1-1
+ 290 CONTINUE
+*----
+* FREE GAS THERMAL DIFFUSION MATRICES.
+*----
+ IF(IX.EQ.0)GO TO 380
+ IF(ITH.NE.0)GO TO 360
+ T=TN(IMT)/293.16
+ AMT=AWR(IMT)
+ IF(AMT.LT.1.0)AMT=1.0
+ DO 300 K=NGRO-IX+1,NGRO
+ SIG1(K)=SIG1(K)/SIGS(K,1)
+ 300 CONTINUE
+ X1=0.0253D-06
+ DDE=-UUU(NGRO-IX)
+ ENER=E0*EXP(DDE)
+ X2=SQRT(ENER/X1)
+ DO 305 J=1,IX
+ K=IX+1-J
+ IE=NGRO-IX+J
+ DDE=-UUU(IE)
+ ENER=E0*DEXP(DDE)
+ DDE=SQRT(ENER/X1)
+ VECT(K)=REAL(X2-DDE)
+ X2=DDE
+ VTHER(K)=2.0*VECT(K)/DELTA(IE)
+ 305 CONTINUE
+ CALL LIBBAS(1,AT,0.0,AMT,T,IX,VTHER,VECT,NGRO,PP,SSS,SSS1,SS11)
+ IF(AMT.GT.100.) THEN
+ DO 310 J=1,IX
+ K=NGRO-J+1
+ SSS(J)=SIGS(K,1)
+ 310 CONTINUE
+ ENDIF
+ DO 335 I=1,IX
+ K=NGRO-I+1
+ SIG1(K)=SIG1(K)*SSS(I)
+ SS1(I)=SIG1(K)
+ RENORM=0.0
+ DO 320 J=1,IX
+ RENORM=RENORM+VTHER(J)*VECT(J)*PP(J,I)
+ 320 CONTINUE
+ RENORM=RENORM/(VTHER(I)*VECT(I))
+ RENORM=1.0/RENORM
+ DO 330 J=1,IX
+ PP(J,I)=PP(J,I)*SSS(I)*RENORM
+ 330 CONTINUE
+ 335 CONTINUE
+ DO 345 J=1,IX
+ AUX=VTHER(J)*VTHER(J)
+ DO 340 I=1,IX
+ PP(I,J)=PP(I,J)/AUX*VTHER(I)*VTHER(I)
+ 340 CONTINUE
+ 345 CONTINUE
+ I2=IIIC+IX*IX
+ IF(I2.GT.MAXTRA) THEN
+ WRITE(HSMG,960) 'MAXTRA'
+ CALL XABORT(HSMG)
+ ENDIF
+ DO 355 J=1,IX
+ DO 350 K=1,IX
+ PRI(IIIC+(J-1)*IX+K-1)=PP(J,K)
+ 350 CONTINUE
+ 355 CONTINUE
+ IANIS(NKDEB)=0
+ ITY(NKDEB)=7
+ NEXT(NKDEB)=IX*IX
+ NEXU(NKDEB)=IX
+ NEXV(NKDEB)=IX
+ NEXW(NKDEB)=INT(TN(IMT))
+ III(NKDEB)=IIIC
+ IIIC=I2+1
+ NKDEB=NKDEB+1
+*
+ 360 DO 370 J=1,IX
+ K=NGRO-J+1
+ SIG1(K)=SS1(J)
+ SIGS(K,1)=SSS(J)
+ 370 CONTINUE
+*
+ 380 IF(NR1.GT.0) THEN
+ DO 390 IR=1,NR1
+ READ(NIN)
+ 390 CONTINUE
+ ENDIF
+ NKDEB=NKDEB-1
+ IIIC=IIIC-1
+ IF(IMPX.GT.0) THEN
+ WRITE(NSYSO,860) (ISONAM(I0,IMT),I0=1,3),(TIT(J),J=1,9),
+ 1 NISBEF(IMT),IIIC,(ITYPE(L),L=1,NTYPE)
+ WRITE(NSYSO,870) (ITY(L),L=1,NKDEB)
+ WRITE(NSYSO,880) (TIT(J),J=10,18)
+ ENDIF
+ IF(IMPX.GT.7) THEN
+ DO 395 K1=1,NKDEB
+ I1=III(K1)
+ I2=I1+NEXT(K1)-1
+ WRITE(NSYSO,910) NISB(IMT),K1,ITY(K1),NEXU(K1),NEXV(K1),
+ 1 NEXW(K1),IANIS(K1),(PRI(K),K=I1,I2)
+ 395 CONTINUE
+ ENDIF
+*----
+* SAVE SCATTERING MATRICES ON LCM
+*----
+ INGRO=0
+ DO 396 IG1=1,NGRO
+ IF(SIG1(IG1).NE.0.0) INGRO=NL-1
+ 396 CONTINUE
+ DO 480 IL=0,INGRO
+ ZL=2.0*REAL(IL)+1.0
+ DO 420 IG2=1,NGRO
+ CALL LIBSEC(MAXTRA,IG2,IL,NGRO,IX,UUU,DELTA,SIGS(1,1),SIG1,PRI,
+ 1 NLET,VECT,DEL,NKDEB,IANIS,ITY,NEXT,NEXU,NEXV,NEXW,III)
+ DO 400 IG1=1,IG2
+ SCAT(IG2,IG1,IL+1)=VECT(IG2-IG1+1)*DELTA(IG2)/(ZL*DELTA(IG1))
+ 400 CONTINUE
+ DO 410 IG1=IG2+1,NGRO
+ SCAT(IG2,IG1,IL+1)=VECT(IG2+NGRO-IG1+1)*DELTA(IG2)/(ZL*DELTA(IG1))
+ 410 CONTINUE
+ 420 CONTINUE
+*
+ IF(IL.EQ.0) THEN
+* PROCESS NEXCESS INFORMATION.
+ LEXC=.FALSE.
+ DO 430 IG1=1,NGRO-IX
+ SSS(IG1)=-SIGS(IG1,1)
+ DO 425 IG2=1,NGRO
+ SSS(IG1)=SSS(IG1)+SCAT(IG2,IG1,1)
+ 425 CONTINUE
+ IF(SSS(IG1)/SIGS(IG1,1).GT.1.0E-5) THEN
+ LEXC=.TRUE.
+ SIGS(IG1,1)=SIGS(IG1,1)+SSS(IG1)
+ ELSE
+ SSS(IG1)=0.0
+ ENDIF
+ 430 CONTINUE
+ DO 440 IG1=NGRO-IX+1,NGRO
+ SSS(IG1)=0.0
+ 440 CONTINUE
+ IF(LEXC) CALL LCMPUT(KPLIB,'N2N',NGRO,2,SSS)
+ ENDIF
+*
+ IF(IL.GT.0) THEN
+ DO 455 IG1=1,NGRO
+ SIGS(IG1,IL+1)=0.0
+ DO 450 IG2=1,NGRO
+ SIGS(IG1,IL+1)=SIGS(IG1,IL+1)+SCAT(IG2,IG1,IL+1)
+ 450 CONTINUE
+ 455 CONTINUE
+ ENDIF
+ 480 CONTINUE
+ DO 490 IG1=1,NGRO
+ VECT(IG1)=SIGA(IG1)+SIGS(IG1,1)-SSS(IG1)
+ 490 CONTINUE
+*----
+* SAVE INFINITE-DILUTION X-S INFORMATION.
+*----
+ WRITE(HNAMIS,'(3A4)') (ISONAM(I0,IMT),I0=1,3)
+ CALL LCMPUT(KPLIB,'NTOT0',NGRO,2,VECT)
+ CALL LCMPUT(KPLIB,'README',18,3,TIT)
+ CALL LCMPTC(KPLIB,'ALIAS',12,HNAMIS)
+ CALL LCMPUT(KPLIB,'AWR',1,2,AWR(IMT))
+ CALL XDRLGS(KPLIB,1,0,0,INGRO,1,NGRO,SIGS,SCAT,ITYPRO)
+ GO TO 50
+*----
+* SELF-SHIELDING CONTROL.
+*----
+ 500 IPR(2,IMT)=1
+ IF((IT(1).NE.IMAIL).OR.(IT(2).NE.NGRO).OR.(IT(3).NE.0))
+ 1 CALL XABORT('LIBAPL: SELF-SHIELDING FAILURE (1).')
+ NS=IT(4)
+*----
+* RECOVER INFINITE-DILUTION X-S INFORMATION.
+*----
+ KPLIB=IPISO(IMT) ! set IMT-th isotope
+ CALL LCMGET(KPLIB,'NTOT0',SIGA)
+ CALL XDRLGS(KPLIB,-1,0,0,NL-1,1,NGRO,SIGS,SCAT,ITYPRO)
+*----
+* COMPUTE P0 TRANSFER PROBABILITIES.
+*----
+ DO 515 IG2=1,NGRO
+ SIGA(IG2)=SIGA(IG2)-SIGS(IG2,1)
+ DO 510 IG1=1,NGRO
+ SCAT(IG2,IG1,1)=SCAT(IG2,IG1,1)/SIGS(IG1,1)
+ 510 CONTINUE
+ 515 CONTINUE
+*
+ ISS=0
+ IAS=0
+ IFS=0
+ I104=0
+ JTYSEC=0
+ NTYPE=0
+ DO 520 IK=1,NS
+ IF(IT(IK+4).NE.JTYSEC) THEN
+ NTYPE=NTYPE+1
+ IF(NTYPE.GT.4) CALL XABORT('LIBAPL: TOO MANY TYPES.')
+ NTETA(NTYPE)=1
+ IF(IT(IK+4).EQ.101) ISS=NTYPE
+ IF(IT(IK+4).EQ.102) IAS=NTYPE
+ IF(IT(IK+4).EQ.103) IFS=NTYPE
+ IF(IT(IK+4).EQ.104) I104=NTYPE
+ JTYSEC=IT(IK+4)
+ ITYPE(NTYPE)=IT(IK+4)
+ ELSE
+ NTETA(NTYPE)=NTETA(NTYPE)+1
+ ENDIF
+ 520 CONTINUE
+ IF(IFS.GT.0) CALL LCMGET(KPLIB,'NUSIGF',SIGF)
+ IF(IAS.EQ.0) CALL XABORT('LIBAPL: SELF-SHIELDING FAILURE (2).')
+ IF(IMPX.GT.0) THEN
+ WRITE(NSYSO,990) NISBEF(IMT),(TIT(I),I=1,9),
+ 1 (ITYPE(I),I=1,NTYPE)
+ WRITE(NSYSO,880) (TIT(I),I=10,18)
+ ENDIF
+*----
+* TEMPERATURE INTERPOLATION OF EFFECTIVE REACTION RATES.
+*----
+ DO 590 I=1,NTYPE
+ IF(NTETA(I).EQ.1) THEN
+ READ (NIN) TEMP,NSEI,(SIGE(K,I),K=1,NSEI),N2,N6,((SEFF(K,J
+ 1 ,I),J=1,N6),K=1,NSEI)
+ ELSE
+ IF(NTETA(I).GT.MAXTMP) THEN
+ WRITE(HSMG,960) 'MAXTMP'
+ CALL XABORT(HSMG)
+ ENDIF
+ DO 532 ITET=1,NTETA(I)
+ READ(NIN) TETAB(ITET),NSEI,(SIGE(K,I),K=1,NSEI),N2,N6,
+ 1 ((SEAUX(K,J),J=1,N6),K=1,NSEI)
+ IF(ITET.NE.1) THEN
+ IF(TN(IMT).LT.TETAB(ITET)) GO TO 540
+ IF(ITET.EQ.NTETA(I)) GO TO 560
+ ENDIF
+ DO 531 K=1,NSEI
+ DO 530 J=1,N6
+ SEFF(K,J,I)=SEAUX(K,J)
+ 530 CONTINUE
+ 531 CONTINUE
+ 532 CONTINUE
+ 540 ITE=ITET+1
+ DO 550 ITT=ITE,NTETA(I)
+ READ(NIN)
+ 550 CONTINUE
+ 560 DT=SQRT(TN(IMT))-SQRT(TETAB(ITET))
+ DT=DT/(SQRT(TETAB(ITET))-SQRT(TETAB(ITET-1)))
+ DO 575 K=1,NSEI
+ DO 570 J=1,N6
+ SEFF(K,J,I)=(SEAUX(K,J)-SEFF(K,J,I))*DT+SEAUX(K,J)
+ 570 CONTINUE
+ 575 CONTINUE
+ ENDIF
+ IF(NSEI.GT.MAXDIL) THEN
+ WRITE(HSMG,'(37HLIBAPL: MAXDIL SHOULD BE INCREASED TO,I4)')
+ 1 NSEI
+ CALL XABORT(HSMG)
+ ELSE IF(NSEI.GT.1) THEN
+ IF(SIGE(1,I).GT.SIGE(2,I)) CALL XABORT('LIBAPL: INVALID ORDER'
+ 1 //'ING OF THE DILUTIONS.')
+ ENDIF
+ NGF=MIN(NGF,N2-1)
+ NGFR=MAX(NGFR,N2+N6-1)
+ IF(I.EQ.I104) THEN
+ DO 585 J=1,N6
+ DO 580 K=1,NSEI
+ IF((SIGE(K,I).LT.1.0E10).OR.(K.EQ.1)) THEN
+ SEFF(K,J,I)=(1.0-SEFF(K,J,I))*SIGE(K,I)
+ ELSE
+ SEFF(K,J,I)=SEFF(K-1,J,I)
+ ENDIF
+ 580 CONTINUE
+ 585 CONTINUE
+ ENDIF
+ NSE(I)=NSEI
+ 590 CONTINUE
+*----
+* DILUTION INTERPOLATION OF EFFECTIVE REACTION RATES.
+*----
+ DO 600 L=1,NGRO
+ IF(ISS.NE.0) PHI(L,ISS)=SIGS(L,1)
+ IF(IAS.NE.0) PHI(L,IAS)=SIGA(L)
+ IF(IFS.NE.0) PHI(L,IFS)=SIGF(L)
+ IF(I104.NE.0) PHI(L,I104)=SIGA(L)
+ LINF(L)=.FALSE.
+ VECT(L)=SIGS(L,1)
+ 600 CONTINUE
+*
+ DO 625 LE=1,N6
+ L=LE+N2-1
+ SEIM=MAX(0.0,SN(L,IMT))
+ DO 620 I=1,NTYPE
+ IF(NSE(I).EQ.1) THEN
+ PHI(L,I)=SEFF(1,LE,I)
+ ELSE
+ NSEI=NSE(I)
+ IF(SIGE(NSE(I),I).GE.1.0E10) NSEI=NSE(I)-1
+ IF(SEIM.LT.SIGE(NSEI,I)) THEN
+ DO 610 K=1,NSEI
+ XE(K)=SQRT(SIGE(K,I))
+ GE(K)=SEFF(K,LE,I)
+ 610 CONTINUE
+ CALL LIBLAG(NSEI,XE,GE,SQRT(SEIM),PHI(L,I))
+ ELSE IF(NSE(I).GT.NSEI) THEN
+ IF(I.EQ.I104) LINF(L)=.TRUE.
+ FAC=SIGE(NSEI,I)/SEIM
+ PHI(L,I)=FAC*SEFF(NSEI,LE,I)+(1.0-FAC)*SEFF(NSE(I),LE,I)
+ ENDIF
+ ENDIF
+ 620 CONTINUE
+ 625 CONTINUE
+*----
+* RECOVER THE EFFECTIVE FLUX.
+*----
+ IF(IMPX.GT.4) WRITE(NSYSO,1020)
+ DO 630 L=1,NGRO
+ SS1(L)=1.0
+ 630 CONTINUE
+ DO 660 L=N2,N2+N6-1
+ SEIM=SN(L,IMT)
+ IF(SEIM.EQ.0.) CALL XABORT('LIBAPL: SELF-SHIELDING FAILURE (3).')
+ IF((IAS.NE.0).AND.(ISS.NE.0)) THEN
+* COMPUTE THE EFFECTIVE FLUX.
+ TMP1=0.0D0
+ DO 640 IG2=1,N2-1
+ TMP1=TMP1+SCAT(L,IG2,1)*PHI(IG2,ISS)*DELTA(IG2)/DELTA(L)
+ 640 CONTINUE
+ IF(TMP1.GT.5.0E-3*PHI(L,ISS)) THEN
+* USE A SIMPLIFIED MODEL.
+ AUX=PHI(L,IAS)
+ ELSE
+* USE A SLOWING-DOWN BALANCE EQUATION.
+ TMP=TMP1
+ DO 650 IG2=N2,N2+N6-1
+ TMP=TMP+SCAT(L,IG2,1)*PHI(IG2,ISS)*DELTA(IG2)/DELTA(L)
+ 650 CONTINUE
+ AUX=REAL(PHI(L,IAS)+PHI(L,ISS)-TMP)
+ ENDIF
+ ELSE IF(IAS.NE.0) THEN
+* COMPUTE THE EFFECTIVE FLUX USING A SIMPLIFIED MODEL.
+ AUX=PHI(L,IAS)
+ ELSE
+ AUX=0.0
+ ENDIF
+*
+ IF(SB(L,IMT).GE.1.0E10) THEN
+* USE AN INFINITE DILUTION VALUE.
+ ZNPHI=0.0
+ ELSE IF((I104.NE.0).AND.LINF(L)) THEN
+* USE AN INTERPOLATED VALUE NEAR INFINITE DILUTION.
+ NSEI=NSE(I104)
+ IF(SIGE(NSE(I104),I104).GE.1.0E10) NSEI=NSE(I104)-1
+ FAC=(SIGE(NSEI,I104)/SEIM)**2
+ ZNPHI=FAC*PHI(L,I104)+(1.0-FAC)*AUX
+ ELSE IF(I104.NE.0) THEN
+* USE AN INTERPOLATED VALUE.
+ ZNPHI=PHI(L,I104)
+ ELSE
+* USE A CALCULATED VALUE.
+ ZNPHI=AUX
+ ENDIF
+ PHI0=1.0-ZNPHI/SB(L,IMT)
+ IF((PHI0.LE.0.0).OR.(PHI0.GT.1.2)) THEN
+ WRITE(HSMG,980) PHI0,L,ZNPHI,SEIM,(ISONAM(I0,IMT),I0=1,3)
+ WRITE(NSYSO,'(/1X,A131)') HSMG
+ ENDIF
+ SS1(L)=PHI0
+ IF(IFS.GT.0) SIGF(L)=PHI(L,IFS)/PHI0
+ IF(IAS.GT.0) SIGA(L)=PHI(L,IAS)/PHI0
+ IF(ISS.GT.0) SIGS(L,1)=PHI(L,ISS)/PHI0
+ IF(IMPX.GT.4) WRITE(NSYSO,1010) L,PHI0,SIGF(L),SIGA(L),SIGS(L,1),
+ 1 SEIM,SB(L,IMT),ZNPHI
+ 660 CONTINUE
+ IF(IMPX.GT.4) WRITE(NSYSO,'(/)')
+*
+ CALL LCMPUT(KPLIB,'NWT0',NGRO,2,SS1)
+*----
+* SELF-SHIELDING OF THE TRANSFERT CROSS SECTIONS.
+*----
+ IF(ISS.NE.0) THEN
+ DO 675 IG1=1,NGRO
+ DO 670 IG2=1,NGRO
+ SCAT(IG2,IG1,1)=SCAT(IG2,IG1,1)*SIGS(IG1,1)
+ 670 CONTINUE
+ 675 CONTINUE
+ INGRO=NL-1
+ DO 680 IL=NL-1,0,-1
+ IF(ITYPRO(IL+1).EQ.0) THEN
+ INGRO=INGRO-1
+ ELSE
+ GO TO 685
+ ENDIF
+ 680 CONTINUE
+ 685 DO 695 IL=1,NL-1
+ IF(ITYPRO(IL+1).GT.0) THEN
+ DO 691 IG2=1,NGRO
+ SIGS(IG2,IL+1)=SIGS(IG2,IL+1)*SIGS(IG2,1)/VECT(IG2)
+ DO 690 IG1=1,NGRO
+ SCAT(IG2,IG1,IL+1)=SCAT(IG2,IG1,IL+1)*SIGS(IG1,1)/VECT(IG1)
+ 690 CONTINUE
+ 691 CONTINUE
+ ENDIF
+ 695 CONTINUE
+*
+* SAVE SELF-SHIELDED X-S INFORMATION.
+ CALL XDRLGS(KPLIB,1,0,0,INGRO,1,NGRO,SIGS,SCAT,ITYPRO)
+ ENDIF
+*----
+* SELF-SHIELDING OF THE RADIATIVE CAPTURE CROSS SECTIONS.
+*----
+ IF(IPR(3,IMT).EQ.1) THEN
+ CALL LCMGET(KPLIB,'NTOT0',SS1)
+ DO 700 I=1,NGRO
+ SS1(I)=SS1(I)-VECT(I)
+ 700 CONTINUE
+ CALL LCMGET(KPLIB,'NG',VECT)
+ DO 710 I=1,NGRO
+ IF(SS1(I).EQ.0.0) GO TO 710
+ VECT(I)=VECT(I)*SIGA(I)/SS1(I)
+ 710 CONTINUE
+ CALL LCMPUT(KPLIB,'NG',NGRO,2,VECT)
+ ENDIF
+*----
+* SELF-SHIELDING OF THE FISSION CROSS SECTIONS.
+*----
+ IF(IFS.NE.0) THEN
+ IF(IPR(4,IMT).EQ.1) THEN
+ CALL LCMGET(KPLIB,'NUSIGF',SS1)
+ CALL LCMGET(KPLIB,'NFTOT',VECT)
+ DO 720 I=1,NGRO
+ IF(SS1(I).EQ.0.0) GO TO 720
+ VECT(I)=VECT(I)*SIGF(I)/SS1(I)
+ 720 CONTINUE
+ CALL LCMPUT(KPLIB,'NFTOT',NGRO,2,VECT)
+ ENDIF
+ CALL LCMPUT(KPLIB,'NUSIGF',NGRO,2,SIGF)
+ ENDIF
+*
+ DO 730 I=1,NGRO
+ SIGA(I)=SIGA(I)+SIGS(I,1)
+ 730 CONTINUE
+ CALL LCMPUT(KPLIB,'NTOT0',NGRO,2,SIGA)
+ GO TO 50
+*----
+* CHECK IF ALL NBISO ISOTOPES HAVE BEEN PROCESSED.
+*----
+ 740 NISOT=0
+ DO 750 IMT=1,NBISO
+ IF(MASKI(IMT)) THEN
+ IF((IPR(1,IMT).EQ.0).AND.(.NOT.NOTG)) THEN
+ GO TO 45
+ ELSE IF((IPR(1,IMT).EQ.0).AND.NOTG) THEN
+ WRITE(NSYSO,900) (ISONAM(I0,IMT),I0=1,3),NAMFIL
+ NISOT=NISOT+1
+ ELSE IF((IPR(2,IMT).EQ.0).AND.(.NOT.NOTG)) THEN
+ GO TO 45
+ ELSE IF((IPR(2,IMT).EQ.0).AND.NOTG) THEN
+ WRITE(NSYSO,900) (ISHINA(I0,IMT),I0=1,3),NAMFIL
+ NISOT=NISOT+1
+ ENDIF
+ ENDIF
+ 750 CONTINUE
+*----
+* ADD NG CROSS SECTIONS.
+*----
+ DO 790 IMT=1,NBISO
+ IF(MASKI(IMT).AND.(IPR(3,IMT).EQ.0)) THEN
+ KPLIB=IPISO(IMT) ! set IMT-th isotope
+ CALL LCMGET(KPLIB,'NTOT0',VECT)
+ CALL LCMLEN(KPLIB,'SIGS00',LENGT,ITYLCM)
+ IF(LENGT.EQ.NGRO) THEN
+ CALL LCMGET(KPLIB,'SIGS00',SSS)
+ DO 760 IU=1,NGRO
+ VECT(IU)=VECT(IU)-SSS(IU)
+ 760 CONTINUE
+ ENDIF
+ IF(IPR(4,IMT).EQ.1) THEN
+ CALL LCMGET(KPLIB,'NFTOT',SSS)
+ DO 770 IU=1,NGRO
+ VECT(IU)=VECT(IU)-SSS(IU)
+ 770 CONTINUE
+ ENDIF
+ CALL LCMLEN(KPLIB,'N2N',LENGT,ITYLCM)
+ IF(LENGT.EQ.NGRO) THEN
+ CALL LCMGET(KPLIB,'N2N',SSS)
+ DO 780 IU=1,NGRO
+ VECT(IU)=VECT(IU)+SSS(IU)
+ 780 CONTINUE
+ ENDIF
+ CALL LCMPUT(KPLIB,'NG',NGRO,2,VECT)
+ ENDIF
+ 790 CONTINUE
+*----
+* CLOSE THE APOLIB FILE.
+*----
+ IER=KDRCLS(NIN,1)
+ IF(IER.LT.0) THEN
+ WRITE(HSMG,'(37HLIBAPL: UNABLE TO CLOSE LIBRARY FILE ,A16,1H.
+ 1 )') NAMFIL
+ CALL XABORT(HSMG)
+ ENDIF
+ IF((IMPX.GT.0).AND.(NED.GT.0)) WRITE(NSYSO,1030) (HVEC(I),
+ 1 I=1,NED)
+ IF(NISOT.GT.0) CALL XABORT('LIBAPL: MISSING ISOTOPES')
+*----
+* SCRATCH STORAGE DEALLOCATION
+*----
+ DEALLOCATE(LINF)
+ DEALLOCATE(SEFF,SCAT,DELTA,UUU,SS11,SS1,SSS1,SSS,PP1,PP,PHI,
+ 1 VTHER,PRI,SIGF,SIGA,SIG1,SIGS,VECT,AWR)
+ DEALLOCATE(ITYPRO,NISBEF,NISB,IPR)
+ RETURN
+*
+ 860 FORMAT(1X,3A4,3H * ,9A4,2H *,I10,I12,2X,8I3)
+ 870 FORMAT(1H+,101X,10I3/(102X,10I3))
+ 880 FORMAT(14X,2H* ,9A4,2H *)
+ 890 FORMAT(/35H PROCESSING APOLLO-1 LIBRARY NAMED ,A16,1H.//
+ 1 55X,14HSELF-SHIELDING,1X,8HTRANSFER/22H ISOTOPE..... LIBRARY ,
+ 2 7HCONTENT,25(1H.),6X,4HDATA,6X,7HFILL-IN,2X,7HVECTOR ,
+ 3 5HTYPES,11(1H.),1X,12HMATRIX TYPES,11(1H.)/1X,12(1H-),1X,
+ 4 40(1H-),1X,14(1H-),1X,8(1H-),1X,23(1H-),1X,23(1H-))
+ 900 FORMAT(/27H LIBAPL: MATERIAL/ISOTOPE ',3A4,16H' IS MISSING ON ,
+ 1 17HAPOLIB FILE NAME ,A8,1H.)
+ 910 FORMAT(//8H ISOTOPE,I12,5X,20HDIFFUSION MATRIX NB.,I3,5X,
+ 1 6HTYPE =,I3,5X,6HNEXU =,I3,5X,6HNEXV =,I3,5X,6HNEXW =,I4,5X,
+ 1 12HANISOTROPY =,I3/(1P,10E13.5))
+ 920 FORMAT(//8H ISOTOPE,I12,5X,8HRECORD =,I3,5X,10HREACTION =,I3)
+ 930 FORMAT(1X,1P,10E13.5)
+ 940 FORMAT(/47H LIBAPL: UNABLE TO RECOVER THE GROUP STRUCTURE.)
+ 950 FORMAT(/53H LIBAPL: *** WARNING *** THE NUMBER OF THERMAL GROUPS,
+ 1 17H WAS CHANGED FROM,I4,3H TO,I4,1H.)
+ 960 FORMAT(30HLIBAPL: INSUFFICIENT VALUE OF ,A6,1H.)
+ 980 FORMAT(47HLIBAPL: *** WARNING *** INVALID VALUE OF PHI0 (,1P,
+ 1 E11.3,0P,10H) IN GROUP,I4,8H. ZNPHI=,1P E12.3,2X,5HSEIM=,E12.3,
+ 2 2X,5HISO=',3A4,1H')
+ 990 FORMAT(1X,I12,3H * ,9A4,2H *,21H SELF-SHIELDING DATA.,4X,8I4)
+ 1010 FORMAT(5X,I5,1P,8E15.5)
+ 1020 FORMAT(/5X,'GROUP',11X,'PHI0',10X,'SIGF0',10X,'SIGA0',10X,
+ 1 'SIGS0',10X,'DILUT',13X,'SB',12X,'ZNPHI')
+ 1030 FORMAT(/39H EXTRA REACTION EDITS FOUND ON APOLIB: ,5A7)
+ END