summaryrefslogtreecommitdiff
path: root/Dragon/src/EDIDEP.f
diff options
context:
space:
mode:
Diffstat (limited to 'Dragon/src/EDIDEP.f')
-rw-r--r--Dragon/src/EDIDEP.f138
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