diff options
Diffstat (limited to 'Dragon/src/EDIDEP.f')
| -rw-r--r-- | Dragon/src/EDIDEP.f | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/Dragon/src/EDIDEP.f b/Dragon/src/EDIDEP.f new file mode 100644 index 0000000..610a4e3 --- /dev/null +++ b/Dragon/src/EDIDEP.f @@ -0,0 +1,138 @@ +*DECK EDIDEP + SUBROUTINE EDIDEP(IPRINT,IPLIB,IPEDIT,NBNISO,HNNRF,ILNRF,IEVOL, + 1 LISO,KERMA,NBCH) +* +*----------------------------------------------------------------------- +* +*Purpose: +* Create the 'DEPL-CHAIN' directory on the edition LCM object. +* +*Copyright: +* Copyright (C) 2007 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 +* IPRINT print parameter. +* IPLIB pointer to the internal library LCM object. +* IPEDIT pointer to the edition LCM object. +* NBNISO number of available isotopes in the edition LCM object. +* HNNRF reference names of the available isotopes in the edition +* LCM object. +* ILNRF selection flag of the available isotopes in the edition +* LCM object (=1 if selected). +* IEVOL flag making an isotope non-depleting: +* =1 to force an isotope to be non-depleting. +* LISO =.true. if we want to register each isotope after merging. +* KERMA kerma availability (=1 if 'H-FACTOR' is available). +* +*Parameters: output +* NBCH number of depleting nuclides after lumping +* +*----------------------------------------------------------------------- +* + USE GANLIB +*---- +* SUBROUTINE ARGUMENTS +*---- + TYPE(C_PTR) IPLIB,IPEDIT + INTEGER IPRINT,NBNISO,HNNRF(3,NBNISO),ILNRF(NBNISO),IEVOL(NBNISO), + & KERMA(NBNISO),NBCH + LOGICAL LISO +*---- +* LOCAL VARIABLES +*---- + PARAMETER (NSTATE=40,MAXBCH=500) + INTEGER ISTATE(NSTATE),HICH(3,MAXBCH) +*---- +* ALLOCATABLE ARRAYS +*---- + INTEGER, ALLOCATABLE, DIMENSION(:) :: MYLIS,IHREAC,IDREA,IPREA + INTEGER, ALLOCATABLE, DIMENSION(:,:) :: IHISO + REAL, ALLOCATABLE, DIMENSION(:) :: DDECA + REAL, ALLOCATABLE, DIMENSION(:,:) :: DENER,PRATE,YIELD +*---- +* FIND THE DEPLETING ISOTOPES IN THE EDITION MICROLIB +*---- + CALL LCMGET(IPLIB,'STATE-VECTOR',ISTATE) + NBISO=ISTATE(1) + NBFISS=ISTATE(2) + NBDPF=ISTATE(3) + NSUPS=ISTATE(7) + NREAC=ISTATE(8) + NFATH=ISTATE(9) + ALLOCATE(IHISO(3,NBISO)) + CALL LCMGET(IPLIB,'ISOTOPESDEPL',IHISO) +* WE HAVE TO REGISTER SEVERAL TIMES THE SAME ISOTOPE IN THE NEW +* DEPL-CHAIN IF WE WANT IT TO DEPLETE + NBCH=0 + DO 20 ISO=1,NBISO + DO JSO=1,NBNISO + IF((ILNRF(JSO).EQ.0).OR.(IEVOL(JSO).EQ.1)) CYCLE + IF((IHISO(1,ISO).EQ.HNNRF(1,JSO)).AND. + & (IHISO(2,ISO).EQ.HNNRF(2,JSO))) THEN + IF(LISO) THEN + NBCH=NBCH+1 + IF(NBCH.GT.MAXBCH) CALL XABORT('EDIDEP: MAXBCH OVERFLOW(1)') + HICH(1,NBCH)=IHISO(1,ISO) + HICH(2,NBCH)=IHISO(2,ISO) + ELSE + GO TO 10 + ENDIF + ENDIF + ENDDO + GO TO 20 + 10 IF(.NOT.LISO) THEN + NBCH=NBCH+1 + IF(NBCH.GT.MAXBCH) CALL XABORT('EDIDEP: MAXBCH OVERFLOW(2)') + HICH(1,NBCH)=IHISO(1,ISO) + HICH(2,NBCH)=IHISO(2,ISO) + ENDIF + 20 CONTINUE +*---- +* GENERATE THE DEPLETION INFORMATION CORRESPONDING TO THE AVAILABLE +* ISOTOPES +*---- + IF(NBCH.GT.0) THEN + MAXFP=NBDPF+30 ! reserve 30 location for lumped fp daughters + NBFPCH=NBCH + ALLOCATE(MYLIS(NBISO),IHREAC(2*NREAC),IDREA(NREAC*NBISO), + 1 DENER(NREAC,NBISO),DDECA(NBISO),IPREA(NFATH*NBISO), + 2 PRATE(NFATH,NBISO),YIELD(NBFISS,MAXFP)) + CALL LCMGET(IPLIB,'CHARGEWEIGHT',MYLIS) + CALL LCMGET(IPLIB,'DEPLETE-IDEN',IHREAC) + CALL LCMGET(IPLIB,'DEPLETE-REAC',IDREA) + CALL LCMGET(IPLIB,'DEPLETE-ENER',DENER) + DO ISO=1,NBISO + ! set DENER=0.0 if H-FACTOR is defined. + IF(KERMA(ISO).EQ.1) DENER(2:NREAC,ISO)=0.0 + ENDDO + CALL LCMGET(IPLIB,'DEPLETE-DECA',DDECA) + CALL LCMGET(IPLIB,'PRODUCE-REAC',IPREA) + CALL LCMGET(IPLIB,'PRODUCE-RATE',PRATE) + IF(NBFISS*NBDPF.GT.0) THEN + CALL LCMGET(IPLIB,'FISSIONYIELD',YIELD) + ENDIF +* + CALL LCMSIX(IPEDIT,'DEPL-CHAIN',1) + IF(LISO) THEN + NBFISS2=NBFPCH + NBFPCH2=NBFPCH + ELSE + NBFISS2=NBFISS + NBFPCH2=NBFPCH + ENDIF + CALL EDILUM(IPRINT,IPEDIT,MAXFP,NBISO,NBFISS,NBDPF,NSUPS, + & NREAC,NFATH,NBCH,HICH,IHISO,MYLIS,IHREAC,IDREA,DENER,DDECA, + & IPREA,PRATE,YIELD,LISO,NBFISS2,NBFPCH2) + CALL LCMSIX(IPEDIT,' ',2) +* + DEALLOCATE(YIELD,PRATE,IPREA,DDECA,DENER,IDREA,IHREAC,MYLIS) + ENDIF + DEALLOCATE(IHISO) + RETURN + END |
