diff options
Diffstat (limited to 'Dragon/src/EDITXS.f')
| -rw-r--r-- | Dragon/src/EDITXS.f | 601 |
1 files changed, 601 insertions, 0 deletions
diff --git a/Dragon/src/EDITXS.f b/Dragon/src/EDITXS.f new file mode 100644 index 0000000..0837cf2 --- /dev/null +++ b/Dragon/src/EDITXS.f @@ -0,0 +1,601 @@ +*DECK EDITXS + SUBROUTINE EDITXS(IWGOXS,IUTYPE,IPRINT,NGCOND,NL ,NBNISO, + > CTITLE,IMRG ,ENERGY,ISNNAM,ISNNRF,IPISO , + > MIXISN,AWRISN,DENISN,TMPISN,EMJISN) +* +*----------------------------------------------------------------------- +* +*Purpose: +* Transfer information from edit to isotxs. +* +*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): M. T. Sissaoui +* +*Parameters: input +* IWGOXS unit for ISOTXS file. +* IUTYPE type of ISOTXS file: =2 sequential binary file; +* =3 sequential ascii file. +* IPRINT print level. +* NGCOND number of energy group. +* NL anisotropy order. +* NBNISO number of edit isotopes. +* CTITLE title. +* IMRG mixture to consider. +* ENERGY energy groups. +* ISNNAM names of edit isotopes. +* ISNNRF reference names of edit isotopes. +* IPISO pointers to isotope libraries. +* MIXISN mixture number for edit isotopes. +* AWRISN AWR values for edit isotopes. +* DENISN density for edit isotopes. +* TMPISN temperature for edit isotopes. +* EMJISN energy for edit isotopes (Mega-joules for 10**24 fission). +* +*----------------------------------------------------------------------- +* + USE GANLIB + IMPLICIT NONE +*---- +* SUBROUTINE ARGUMENTS +*---- + TYPE(C_PTR) IPISO(NBNISO) + INTEGER IWGOXS,IUTYPE,IPRINT,NGCOND,NL,NBNISO,IMRG + INTEGER ISNNAM(3,NBNISO),ISNNRF(3,NBNISO),MIXISN(NBNISO) + CHARACTER CTITLE*72 + REAL ENERGY(NGCOND+1),AWRISN(NBNISO),DENISN(NBNISO), + > TMPISN(NBNISO),EMJISN(NBNISO) +*---- +* LOCAL VARIABLES +*---- + INTEGER IOUT,ILCMUP,ILCMDN,NFILNA,NFILCN,MXMULT,NFILMD,MAXA + PARAMETER (MAXA=10000) + REAL A(MAXA) + INTEGER IA(MAXA) + CHARACTER NAMSBR*6,HSMG*131 + PARAMETER (IOUT=6,ILCMUP=1,ILCMDN=2,NFILNA=3,NFILCN=8,MXMULT=2, + > NFILMD=1+NFILNA*MXMULT,NAMSBR='EDITXS') + TYPE(C_PTR) KPEDIT + EQUIVALENCE (A(1),IA(1)) +*---- +* EXTERNAL FUNCTIONS +*---- + DOUBLE PRECISION XDRCST +*---- +* ALLOCATABLE ARRAYS +*---- + INTEGER, ALLOCATABLE, DIMENSION(:) :: LOCISO,IJJ,NJJ,IRECGI,IREC + REAL, ALLOCATABLE, DIMENSION(:) :: AVGVEL,RICHI,RJCHI,RECPX,RECPS +*---- +* LOCAL PARAMETERS +*---- + CHARACTER CM*2,NAMISO*12,FMTRD*5,CIDENT*8,HABSID*8, + > HIDENT*8,HMAT*8,CDUM*8,CISO(10)*6 + INTEGER I,IFILID(NFILMD),IFILCN(NFILCN),NEXTRI, + > MXGDSC,MXGUSC,ICHIST,ISO,IFIL,JSO,KSO,IGROUP, + > IL,INFL,IFTL,IRECG,IRECNB,IRECIB, + > MRECGI,MRECPX,MRECPS,IRECP,ILCMTY, + > ILENG,IRECW,IW,IGR,NRECWR,JFZ, + > JFX,ITC,NBISO,MULTA6,IRECL, + > ITITLE,IC6TIT,JVAR,IRECWR,MRECWR + DOUBLE PRECISION NMASS + LOGICAL LFIRST +*---- +* SET ISOTXS FILE DIMENSIONING RECORD +* MULTA6 = NUMBER OF INTEGER WORDS TO STORE +* CHARACTER*6 VARIABLE +* FMTRD = FORMAT TO STORE CHARACTER*6 VARIABLE +* IN INTEGER WORDS +*---- + PARAMETER (MULTA6=2,FMTRD='(2A4)') +*---- +* EQUIVALENCES +*---- + INTEGER NITMA,NITMA6(6) + REAL FLOTT,FLOTT6(6) + EQUIVALENCE(NITMA,FLOTT),(NITMA6,FLOTT6) +*---- +* DATA +*---- + CHARACTER CFILNC(NFILNA)*10 + SAVE CFILNC + DATA (CFILNC(IFIL),IFIL=1,NFILNA) + > /'ISOTXS','DRAGON','971124'/ +*---- +* SCRATCH STORAGE ALLOCATION +* AVGVEL neutron average velocity +* LOCISO isotope localisation vector +* IJJ position of in group scattering +* NJJ number of scattering groups +*---- + ALLOCATE(LOCISO(NBNISO),IJJ(NGCOND),NJJ(NGCOND)) + ALLOCATE(AVGVEL(NGCOND)) +*----- +* EVALUATE THE ISOTOPE LOCALISATION VECTOR AND +* MAXIMUM NUMBER OF UPSCATTER AND DOWN SCATTER GROUPS +*----- + NMASS=XDRCST('Neutron mass','amu') + NEXTRI=0 + MXGDSC=0 + MXGUSC=0 + ICHIST=2 + ISO=0 +*---- +* ALLOCATE MEMORY TO STORE ISOTOPIC FISSION SPECTRUM +*---- + ALLOCATE(RICHI(NGCOND),RJCHI(NGCOND)) + DO 120 JSO=1,NBNISO + IF(MIXISN(JSO) .EQ. IMRG) THEN + ISO=ISO+1 + LOCISO(ISO)=NEXTRI + NEXTRI=NEXTRI+2+NL + KPEDIT=IPISO(JSO) ! set JSO-th isotope + IF(.NOT.C_ASSOCIATED(KPEDIT)) THEN + WRITE(HSMG,'(A6,11H: ISOTOPE '',3A4,17H'' IS NOT AVAILABL, + > 18HE IN THE MICROLIB.)') NAMSBR,(ISNNAM(ITC,JSO),ITC=1,3) + CALL XABORT(HSMG) + ENDIF +*---- +* TEST IF ALL FISSION PRODUCTION SPECTRUM IDENTICAL +* ICHIST = 2 -> NO FISSION SPECTRUM FOUND +* ICHIST = 1 -> ALL FISSION SPECTRUM IDENTICAL +* ICHIST = 0 -> AT LEAST 2 FISSION SPECTRUM ARE DIFFERENT +*---- + CALL LCMLEN(KPEDIT,'CHI',ILENG,ILCMTY) + IF(ILENG.NE.0) THEN + IF(ICHIST .EQ. 2) THEN + CALL LCMGET(KPEDIT,'CHI',RICHI) + ICHIST=1 + ELSE IF(ICHIST .EQ. 1) THEN + CALL LCMGET(KPEDIT,'CHI',RJCHI) + DO 121 IGROUP=0,NGCOND-1 + IF(RJCHI(IGROUP+1).NE.RICHI(IGROUP+1)) THEN + ICHIST =0 + GO TO 125 + ENDIF + 121 CONTINUE + 125 CONTINUE + ENDIF + ENDIF + DO 130 IL=1,NL + WRITE(CM,'(I2.2)') IL-1 + CALL LCMLEN(KPEDIT,'SCAT'//CM,ILENG,ILCMTY) + IF(ILENG.NE.0) THEN +*---- +* DATA EXISTS FOR THIS SCATTERING LEVEL FOR THIS ISOTOPE +* READ NJJ AND IJJ +* IJJ(IGTO) IS MAXIMUM GROUP NUMBER +* WITH SCATTERING TO "IGTO" GROUP +* NJJ(IGTO) IS NUMBER OF GROUPS +* WITH SCATTERING TO "IGTO" GROUP +* DETERMINE MAXIMUM NUMBER OF UP-SCATTERING GROUPS +* DETERMINE MAXIMUM NUMBER OF DOWN-SCATTERING GROUPS +*---- + CALL LCMGET(KPEDIT,'NJJS'//CM,NJJ) + CALL LCMGET(KPEDIT,'IJJS'//CM,IJJ) + DO 140 IGROUP=1,NGCOND + MXGUSC=MAX(MXGUSC,IJJ(IGROUP)-IGROUP) + MXGDSC=MAX(MXGDSC,IGROUP+NJJ(IGROUP)-IJJ(IGROUP)-1) + 140 CONTINUE + ENDIF + 130 CONTINUE +*---- +* RECOVER AVERAGED VELOCITIES +*---- + CALL LCMLEN(KPEDIT,'OVERV',ILENG,ILCMTY) + IF(ILENG .GT. 0) CALL LCMGET(KPEDIT,'OVERV',AVGVEL) + ENDIF + 120 CONTINUE + DEALLOCATE(RJCHI) +*---- +* IF ICHIST = 2 SET DEFAULT FISSION SPECTRUM ALL TO 0.0 +* AND USE A SINGLE CHI VECTOR +*---- + IF(ICHIST .EQ. 2) THEN + RICHI(:NGCOND)=0.0 + ICHIST = 1 + ENDIF + NBISO=ISO +*---- +* FILE IDENTIFICATION-RECORD 1 +*---- + NRECWR=1+NFILNA*MULTA6 + JFZ=0 + DO 150 IFIL=1,NFILNA + JFX=JFZ+1 + JFZ=JFZ+MULTA6 + READ(CFILNC(IFIL),FMTRD) (IFILID(JVAR),JVAR=JFX,JFZ) + 150 CONTINUE + IFILID(NRECWR)=1 +*---- +* TRANSFER INFORMATION TO ISOTXS +*---- + IRECWR=1 + IF(IUTYPE.EQ.2) THEN + IF(NRECWR.GT.MAXA) CALL XABORT('EDITXS: MAXA OVERFLOW(1).') + IA(:NRECWR)=IFILID(:NRECWR) + CALL XDRITE(IWGOXS,IRECWR,A,NRECWR) + ELSE IF(IUTYPE.EQ.3) THEN + WRITE(IWGOXS,6002) (CFILNC(IFIL),IFIL=1,NFILNA),1 + ENDIF +*---- +* FILE CONTROL-RECORD 2 +*---- + IFILCN(1)=NGCOND + IFILCN(2)=NBISO + IFILCN(3)=MXGUSC + IFILCN(4)=MXGDSC + IFILCN(5)=NL-1 + IFILCN(6)=ICHIST + IFILCN(7)=NL + IFILCN(8)=1 +*----- +* TRANSFER INFORMATION TO ISOTXS +*---- + IRECWR=IRECWR+1 + NRECWR=NFILCN + IF(IUTYPE.EQ.2) THEN + IF(NRECWR.GT.MAXA) CALL XABORT('EDITXS: MAXA OVERFLOW(2).') + IA(:NRECWR)=IFILCN(:NRECWR) + CALL XDRITE(IWGOXS,IRECWR,A,NRECWR) + ELSE IF(IUTYPE.EQ.3) THEN + WRITE(IWGOXS,6003) (IFILCN(I),I=1,8) + ENDIF +*---- +* FILE DATA-RECORD 3 +*---- + MRECWR=(NBISO+12)*MULTA6+1+NBISO+(2+ICHIST)*NGCOND + ALLOCATE(IREC(MRECWR)) + IREC(:MRECWR)=0 + IRECL=1 + ITITLE=1 + DO 160 IC6TIT=1,12 + CIDENT=CTITLE(ITITLE:ITITLE+5)//' ' + ITITLE=ITITLE+6 + READ(CIDENT,FMTRD) (IREC(JVAR),JVAR=IRECL,IRECL+MULTA6-1) + IRECL=IRECL+MULTA6 + 160 CONTINUE + DO 170 JSO=1,NBNISO + IF(MIXISN(JSO).EQ.IMRG) THEN + WRITE(NAMISO,'(3A4)') (ISNNAM(ITC,JSO),ITC=1,3) + CIDENT=NAMISO(1:6)//' ' + READ(CIDENT,FMTRD) (IREC(JVAR),JVAR=IRECL,IRECL+MULTA6-1) + IRECL=IRECL+MULTA6 + ENDIF + 170 CONTINUE +*---- +* SAVE SET CHI IF REQUIRED +*---- + IF(ICHIST .EQ. 1) THEN + DO 122 IGR=1,NGCOND + FLOTT=RICHI(IGR) + IREC(IRECL)=NITMA + IRECL=IRECL+1 + 122 CONTINUE + ENDIF +*---- +* SAVE AVERAGE NEUTRON VELOCITY +*---- + DO 180 IGR=1,NGCOND + FLOTT=1.0/AVGVEL(IGR) + IREC(IRECL)=NITMA + IRECL=IRECL+1 + 180 CONTINUE +*---- +* SAVE ENERGY GROUP +*---- + DO 181 IGR=1,NGCOND+1 + FLOTT=ENERGY(IGR) + IREC(IRECL)=NITMA + IRECL=IRECL+1 + 181 CONTINUE +*---- +* TRANSFER LOCISO IN RECORD VECTOR +*---- + DO 190 ISO=1,NBISO + IREC(IRECL)=LOCISO(ISO) + IRECL=IRECL+1 + 190 CONTINUE +*----- +* TRANSFER INFORMATION TO ISOTXS +*----- + IRECWR=IRECWR+1 + NRECWR=MRECWR + IF(IUTYPE.EQ.2) THEN + IF(NRECWR.GT.MAXA) CALL XABORT('EDITXS: MAXA OVERFLOW(3).') + IA(:NRECWR)=IREC(:NRECWR) + CALL XDRITE(IWGOXS,IRECWR,A,NRECWR) + ELSE IF(IUTYPE.EQ.3) THEN + WRITE(IWGOXS,6004) CTITLE(:66) + KSO=0 + LFIRST=.TRUE. + DO JSO=1,NBNISO + IF(MIXISN(JSO).EQ.IMRG) THEN + KSO=KSO+1 + WRITE(NAMISO,'(3A4)') (ISNNAM(ITC,JSO),ITC=1,3) + CISO(KSO)=NAMISO(1:6)//' ' + ENDIF + IF(LFIRST.AND.(KSO.EQ.9)) THEN + WRITE(IWGOXS,6005) CTITLE(67:72),(CISO(I),I=1,9) + KSO=0 + LFIRST=.FALSE. + ELSE IF(KSO.EQ.10) THEN + WRITE(IWGOXS,'(10(1X,A6))') (CISO(I),I=1,10) + KSO=0 + ENDIF + ENDDO + IF(KSO.GT.0) WRITE(IWGOXS,'(10(1X,A6))') (CISO(I),I=1,KSO) + IF(ICHIST.EQ.1) THEN + WRITE(IWGOXS,'(1P,6E12.5)') (RICHI(IGR),IGR=1,NGCOND) + ENDIF + WRITE(IWGOXS,'(1P,6E12.5)') (1.0/AVGVEL(IGR),IGR=1,NGCOND), + > (ENERGY(IGR),IGR=1,NGCOND+1) + WRITE(IWGOXS,'(12I6)') (LOCISO(ISO),ISO=1,NBISO) + ENDIF + DEALLOCATE(IREC) +*---- +* ISOTOPE CONTROL AND GROUP INDEPENDENT DATA +*---- + MRECGI=3*MULTA6+17+NL*(2*NGCOND+2) + MRECPX=10*NGCOND + MRECPS=NGCOND*NGCOND + ALLOCATE(IRECGI(MRECGI),RECPX(MRECPX),RECPS(MRECPS)) + ISO=0 + DO 200 JSO=1,NBNISO + IF(MIXISN(JSO).EQ.IMRG) THEN + ISO=ISO+1 + IRECGI(:MRECGI)=0 + IRECG=1 + WRITE(NAMISO,'(3A4)') (ISNNAM(ITC,JSO),ITC=1,3) + KPEDIT=IPISO(JSO) ! set JSO-th isotope + HABSID=NAMISO(1:6)//' ' + IF(IPRINT.GE.1) WRITE(IOUT,6000) HABSID(1:6),LOCISO(ISO) + READ(HABSID,FMTRD) (IRECGI(JVAR),JVAR=IRECG,IRECG+MULTA6-1) + IRECG=IRECG+MULTA6 + HIDENT='DRAGON ' + READ(HIDENT,FMTRD) (IRECGI(JVAR),JVAR=IRECG,IRECG+MULTA6-1) + IRECG=IRECG+MULTA6 + WRITE(NAMISO,'(3A4)') (ISNNRF(ITC,JSO),ITC=1,3) + HMAT=NAMISO(1:6)//' ' + READ(HMAT,FMTRD) (IRECGI(JVAR),JVAR=IRECG,IRECG+MULTA6-1) + IRECG=IRECG+MULTA6 + FLOTT=AWRISN(JSO)*REAL(NMASS) + IRECGI(IRECG)=NITMA + FLOTT=EMJISN(JSO)*1.0E-18 + IRECGI(IRECG+1)=NITMA + FLOTT=TMPISN(JSO) + IRECGI(IRECG+3)=NITMA + FLOTT=DENISN(JSO) + IRECGI(IRECG+5)=NITMA + CALL LCMLEN(KPEDIT,'CHI',ILENG,ILCMTY) + IF((ILENG.NE.0).AND.(ICHIST.EQ.0)) IRECGI(IRECG+7)=1 + CALL LCMLEN(KPEDIT,'NUSIGF',ILENG,ILCMTY) + IF(ILENG.NE.0) IRECGI(IRECG+8)=1 + CALL LCMLEN(KPEDIT,'NA',ILENG,ILCMTY) + IF(ILENG.NE.0) IRECGI(IRECG+9)=1 + CALL LCMLEN(KPEDIT,'NP',ILENG,ILCMTY) + IF(ILENG.NE.0) IRECGI(IRECG+10)=1 + CALL LCMLEN(KPEDIT,'N2N',ILENG,ILCMTY) + IF(ILENG.NE.0) IRECGI(IRECG+11)=1 + CALL LCMLEN(KPEDIT,'ND',ILENG,ILCMTY) + IF(ILENG.NE.0) IRECGI(IRECG+12)=1 + CALL LCMLEN(KPEDIT,'NT',ILENG,ILCMTY) + IF(ILENG.NE.0) IRECGI(IRECG+13)=1 + CALL LCMLEN(KPEDIT,'NTOT0',ILENG,ILCMTY) + IF(ILENG.NE.0) IRECGI(IRECG+14)=1 + CALL LCMLEN(KPEDIT,'STRD',ILENG,ILCMTY) + IF(ILENG.NE.0) IRECGI(IRECG+15)=1 + CALL LCMLEN(KPEDIT,'STRD-X',ILENG,ILCMTY) + IF(ILENG.NE.0) IRECGI(IRECG+16)=3 + IRECG=IRECG+17 + DO 210 IL=1,NL + IRECGI(IRECG)=IL-1 + IRECGI(IRECG+NL)=1 + IRECG=IRECG+1 + 210 CONTINUE + IRECG=IRECG+NL + IRECNB=IRECG + IRECIB=IRECNB+NL*NGCOND + DO 220 IL=1,NL + WRITE(CM,'(I2.2)') IL-1 + CALL LCMLEN(KPEDIT,'SCAT'//CM,ILENG,ILCMTY) + IF(ILENG.NE.0) THEN + CALL LCMGET(KPEDIT,'NJJS'//CM,NJJ) + CALL LCMGET(KPEDIT,'IJJS'//CM,IJJ) + DO 230 IGROUP=1,NGCOND + IRECGI(IRECNB)=NJJ(IGROUP) + IRECGI(IRECIB)=IJJ(IGROUP)-IGROUP+1 + IRECNB=IRECNB+1 + IRECIB=IRECIB+1 + 230 CONTINUE + ELSE + DO 240 IGROUP=1,NGCOND + IRECGI(IRECNB)=1 + IRECGI(IRECIB)=1 + IRECNB=IRECNB+1 + IRECIB=IRECIB+1 + 240 CONTINUE + ENDIF + 220 CONTINUE + IRECG=IRECG+2*NL*NGCOND +*----- +* TRANSFER INFORMATION TO ISOTXS +*----- + IF(IPRINT.GE.10) THEN + IRECW=1 + WRITE(CDUM,FMTRD) (IRECGI(JVAR),JVAR=IRECW,IRECW+MULTA6-1) + HABSID=CDUM + IRECW=IRECW+MULTA6 + WRITE(CDUM,FMTRD) (IRECGI(JVAR),JVAR=IRECW,IRECW+MULTA6-1) + HIDENT=CDUM + IRECW=IRECW+MULTA6 + WRITE(CDUM,FMTRD) (IRECGI(JVAR),JVAR=IRECW,IRECW+MULTA6-1) + HMAT=CDUM + IRECW=IRECW+MULTA6 + WRITE(IOUT,6001) HABSID(1:6),HIDENT(1:6),HMAT(1:6), + > (IRECGI(IW),IW=IRECW,IRECW+5), + > (IRECGI(IW),IW=IRECW+6,IRECW+16) + ENDIF + IRECWR=IRECWR+1 + NRECWR=MRECGI + IF(IUTYPE.EQ.2) THEN + IF(NRECWR.GT.MAXA) CALL XABORT('EDITXS: MAXA OVERFLOW(4).') + IA(:NRECWR)=IRECGI(:NRECWR) + CALL XDRITE(IWGOXS,IRECWR,A,NRECWR) + ELSE IF(IUTYPE.EQ.3) THEN + DO IW=1,6 + NITMA6(IW)=IRECGI(3*MULTA6+IW) + ENDDO + WRITE(IWGOXS,6006) HABSID(1:6),HIDENT(1:6),HMAT(1:6), + > (FLOTT6(IW),IW=1,6), + > (IRECGI(IW),IW=3*MULTA6+7,NRECWR) + ENDIF +*------ +* PRINCIPAL CROSS SECTIONS +*------ + RECPX(:MRECPX)=0.0 + IRECP=1 + CALL LCMLEN(KPEDIT,'STRD',ILENG,ILCMTY) + IF(ILENG.NE.0) THEN + CALL LCMGET(KPEDIT,'STRD',RECPX(IRECP)) + IRECP=IRECP+NGCOND + ENDIF + CALL LCMLEN(KPEDIT,'NTOT0',ILENG,ILCMTY) + IF(ILENG.EQ.0) CALL XABORT('EDITXS: NTOT0 DATA MISSING.') + CALL LCMGET(KPEDIT,'NTOT0',RECPX(IRECP)) + IRECP=IRECP+NGCOND + CALL LCMLEN(KPEDIT,'NG',ILENG,ILCMTY) + IF(ILENG.EQ.0) THEN + IFTL=IRECP-NGCOND + INFL=IRECP + CALL LCMLEN(KPEDIT,'SIGS00',ILENG,ILCMTY) + IF(ILENG.EQ.0) CALL XABORT('EDITXS: UNABLE TO MAKE NG.') + CALL LCMGET(KPEDIT,'SIGS00',RECPX(IRECP)) + DO 260 IGROUP=1,NGCOND + RECPX(INFL)=RECPX(IFTL)-RECPX(INFL) + IFTL=IFTL+1 + INFL=INFL+1 + 260 CONTINUE + ELSE + CALL LCMGET(KPEDIT,'NG',RECPX(IRECP)) + ENDIF + IRECP=IRECP+NGCOND + CALL LCMLEN(KPEDIT,'NUSIGF',ILENG,ILCMTY) + IF(ILENG.NE.0) THEN + IFTL=IRECP + CALL LCMGET(KPEDIT,'NFTOT',RECPX(IRECP)) + IRECP=IRECP+NGCOND + INFL=IRECP + CALL LCMGET(KPEDIT,'NUSIGF',RECPX(IRECP)) + IRECP=IRECP+NGCOND +*---- +* COMPUTE NU FROM NUSIGF/NFTOT +*---- + DO 250 IGROUP=1,NGCOND + IF(RECPX(IFTL).NE.0.0) RECPX(INFL)=RECPX(INFL)/RECPX(IFTL) + IFTL=IFTL+1 + INFL=INFL+1 + 250 CONTINUE + ENDIF + CALL LCMLEN(KPEDIT,'CHI',ILENG,ILCMTY) + IF((ILENG.NE.0).AND.(ICHIST.EQ.0)) THEN + CALL LCMGET(KPEDIT,'CHI',RECPX(IRECP)) + IRECP=IRECP+NGCOND + ENDIF + CALL LCMLEN(KPEDIT,'NA',ILENG,ILCMTY) + IF(ILENG.NE.0) THEN + CALL LCMGET(KPEDIT,'NA',RECPX(IRECP)) + IRECP=IRECP+NGCOND + ENDIF + CALL LCMLEN(KPEDIT,'NP',ILENG,ILCMTY) + IF(ILENG.NE.0) THEN + CALL LCMGET(KPEDIT,'NP',RECPX(IRECP)) + IRECP=IRECP+NGCOND + ENDIF + CALL LCMLEN(KPEDIT,'N2N',ILENG,ILCMTY) + IF(ILENG.NE.0) THEN + CALL LCMGET(KPEDIT,'N2N',RECPX(IRECP)) + IRECP=IRECP+NGCOND + ENDIF + CALL LCMLEN(KPEDIT,'ND',ILENG,ILCMTY) + IF(ILENG.NE.0) THEN + CALL LCMGET(KPEDIT,'ND',RECPX(IRECP)) + IRECP=IRECP+NGCOND + ENDIF + CALL LCMLEN(KPEDIT,'NT',ILENG,ILCMTY) + IF(ILENG.NE.0) THEN + CALL LCMGET(KPEDIT,'NT',RECPX(IRECP)) + IRECP=IRECP+NGCOND + ENDIF + CALL LCMLEN(KPEDIT,'STRD-X',ILENG,ILCMTY) + IF(ILENG.NE.0) THEN + CALL LCMGET(KPEDIT,'STRD-X',RECPX(IRECP)) + IRECP=IRECP+NGCOND + IF(ILENG.NE.0) CALL LCMGET(KPEDIT,'STRD-Y',RECPX(IRECP)) + IRECP=IRECP+NGCOND + IF(ILENG.NE.0) CALL LCMGET(KPEDIT,'STRD-Z',RECPX(IRECP)) + IRECP=IRECP+NGCOND + ENDIF + IRECWR=IRECWR+1 + NRECWR=IRECP-1 + IF(IUTYPE.EQ.2) THEN + CALL XDRITE(IWGOXS,IRECWR,RECPX,NRECWR) + ELSE IF(IUTYPE.EQ.3) THEN + WRITE(IWGOXS,6007) (RECPX(I),I=1,NRECWR) + ENDIF +*---- +* SCATTERING BLOCK +*---- + DO 270 IL=1,NL + WRITE(CM,'(I2.2)') IL-1 + CALL LCMLEN(KPEDIT,'SCAT'//CM,NRECWR,ILCMTY) + IF(NRECWR.NE.0) THEN + CALL LCMGET(KPEDIT,'SCAT'//CM,RECPS) + ELSE + RECPS(:NGCOND)=0.0 + NRECWR=NGCOND + ENDIF +*----- +* TRANSFER INFORMATION TO ISOTXS +*---- + IRECWR=IRECWR+1 + IF(IUTYPE.EQ.2) THEN + CALL XDRITE(IWGOXS,IRECWR,RECPS,NRECWR) + ELSE IF(IUTYPE.EQ.3) THEN + WRITE(IWGOXS,6009) (RECPS(I),I=1,NRECWR) + ENDIF + 270 CONTINUE + ENDIF + 200 CONTINUE + DEALLOCATE(RECPS,RECPX,IRECGI) + DEALLOCATE(RICHI) +*---- +* SCRATCH STORAGE DEALLOCATION +*---- + DEALLOCATE(AVGVEL) + DEALLOCATE(NJJ,IJJ,LOCISO) + RETURN +*---- +* FORMAT +*---- + 6000 FORMAT(' STORING ISOTOPE = ',A6,2X,'AT LOCATION = ',I10) + 6001 FORMAT(' HABSID = ',6X,A6/' HIDENT = ',6X,A6/' HMAT = ',6X,A6/ + > ' AMASS = ',E12.5/' EFISS = ',E12.5/' ECAPT = ',E12.5/ + > ' TEMP = ',E12.5/' SIGPOT = ',E12.5/' ADENS = ',E12.5/ + > ' KBR = ',I12 /' ICHI = ',I12 /' IFIS = ',I12 / + > ' IALF = ',I12 /' INP = ',I12 /' IN2N = ',I12 / + > ' IND = ',I12 /' INT = ',I12 /' LTOT = ',I12 / + > ' LTRN = ',I12 /' ISTRPD = ',I12) + 6002 FORMAT(11H 0v isotxs ,A6,1H*,2A6,1H*,I6) + 6003 FORMAT(4H 1d ,8I6) + 6004 FORMAT(4H 2d ,1H*,A66,1H*) + 6005 FORMAT(1H*,A6,1H*,9(1X,A6)) + 6006 FORMAT(4H 4d ,3(1X,A6)/1P,6E12.5/(12I6)) + 6007 FORMAT(4H 5d ,1P,5E12.5/(6E12.5)) + 6009 FORMAT(4H 7d ,1P,5E12.5/(6E12.5)) + END |
