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
|