summaryrefslogtreecommitdiff
path: root/Donjon/src/XENLIB.f
diff options
context:
space:
mode:
Diffstat (limited to 'Donjon/src/XENLIB.f')
-rw-r--r--Donjon/src/XENLIB.f99
1 files changed, 99 insertions, 0 deletions
diff --git a/Donjon/src/XENLIB.f b/Donjon/src/XENLIB.f
new file mode 100644
index 0000000..5ab52d4
--- /dev/null
+++ b/Donjon/src/XENLIB.f
@@ -0,0 +1,99 @@
+*DECK XENLIB
+ SUBROUTINE XENLIB(IPLIB,MAXMIX,NMIX,NBISO,NGRP,XEN)
+
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Update the macroscopic cross sections thanks to the Xenon distribution
+*
+*Copyright:
+* Copyright (C) 2010 Ecole Polytechnique de Montreal
+*
+*Author(s):
+* M. Guyot
+*
+*Parameters: input/output
+* IPLIB adress of the L_LIBRARY
+* MAXMIX maximum number of mixtures in the library
+* NMIX number of mixtures present in the library
+* NBISO number of isotopes
+* NGRP number of energy groups
+* XEN xenon concentrations in each bundle
+*
+*-----------------------------------------------------------------------
+*
+ USE GANLIB
+*----
+* SUBROUTINE ARGUMENTS
+*----
+ TYPE(C_PTR) IPLIB
+ INTEGER MAXMIX,NMIX,NBISO,NGRP
+ REAL XEN(NMIX)
+*----
+* LOCAL VARIABLES
+*----
+ INTEGER IMIX,ISO
+ REAL TMPDAY(3)
+ CHARACTER TEXT*8
+ INTEGER, ALLOCATABLE, DIMENSION(:) :: MIX
+ INTEGER, ALLOCATABLE, DIMENSION(:,:) :: NAME,USED
+ REAL, ALLOCATABLE, DIMENSION(:) :: DENS
+ LOGICAL, ALLOCATABLE, DIMENSION(:) :: MASK,MASKL
+*----
+* SCRATCH STORAGE ALLOCATION
+* MIX 'ISOTOPESMIX'
+* NAME 'ISOTOPESNAME'
+* USED 'ISOTOPESUSED'
+* DENS 'ISOTOPESDENS' updated
+*----
+ ALLOCATE(MIX(NBISO),NAME(3,NBISO),USED(3,NBISO),DENS(NBISO))
+*----
+* RECOVER INFORMATION
+*----
+ CALL LCMGET(IPLIB,'ISOTOPESMIX',MIX)
+ CALL LCMGET(IPLIB,'ISOTOPERNAME',NAME)
+ CALL LCMGET(IPLIB,'ISOTOPESUSED',USED)
+ CALL LCMGET(IPLIB,'ISOTOPESDENS',DENS)
+*----
+* PERFORM CALCULATION
+*----
+ IMIX=0
+ DO 10 ISO=1,NBISO
+ WRITE(TEXT,'(2A4)') (NAME(I,ISO),I=1,2)
+ IF(TEXT.EQ.'Xe135 ') THEN
+ IMIX=IMIX+1
+ DENS(ISO)=XEN(IMIX)
+ ENDIF
+ 10 CONTINUE
+
+ IF(IMIX.NE.NMIX) CALL XABORT('@XENLIB: Xe135 SHOULD BE EXTRACTED '
+ 1 //'IN ALL MIXTURES .')
+
+ CALL LCMPUT(IPLIB,'ISOTOPESDENS',NBISO,2,DENS)
+*----
+* UPDATE MACROSCOPIC XS
+*----
+ ALLOCATE(MASK(MAXMIX),MASKL(NGRP))
+ MASK(:MAXMIX)=.FALSE.
+ MASKL(:NGRP)=.TRUE.
+ DO 20 I=1,NBISO
+ IBM=MIX(I)
+ MASK(IBM)=.TRUE.
+ 20 CONTINUE
+ ITSTMP=0
+ TMPDAY(1)=0.0
+ TMPDAY(2)=0.0
+ TMPDAY(3)=0.0
+*----
+* CALL THE DRAGON SUBROUTINE FOR THE COMPUTATION OF THE MACROSCOPIC XS
+*----
+ CALL LIBMIX(IPLIB,MAXMIX,NGRP,NBISO,USED,MIX,DENS,MASK,MASKL,
+ 1 ITSTMP,TMPDAY)
+ DEALLOCATE(MASKL,MASK)
+*----
+* SCRATCH STORAGE DEALLOCATION
+*----
+ DEALLOCATE(DENS,USED,NAME,MIX)
+ RETURN
+ END