summaryrefslogtreecommitdiff
path: root/Donjon/src/XENLIB.f
blob: 5ab52d456c0c58e4242f6d5901bb62eb1fe79c1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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