summaryrefslogtreecommitdiff
path: root/Dragon/src/INFWIM.f
blob: eab4bbf465bc306e3b9729258da3cbb5c2a284d2 (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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
*DECK INFWIM
      SUBROUTINE INFWIM(CFILNA,IPRINT,NBISO,HNAMIS,AWR)
*
*-----------------------------------------------------------------------
*
*Purpose:
* To recover mass for isotopes of WIMS-AECL libraries.
*
*Copyright:
* Copyright (C) 2002 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): G. Marleau
*
*Parameters: input
* CFILNA  WIMS file name.
* IPRINT  print flag.
* NBISO   number of isotopes.
* HNAMIS  isotope names.
*
*Parameters: output
* AWR     isotope weights
*
*-----------------------------------------------------------------------
*
      USE GANLIB
      IMPLICIT NONE
*----
*  SUBROUTINE ARGUMENTS
*----
      INTEGER    IOUT,IUTYPE,IACTO,LRIND,MAXISO,MAXTEM,NCT,
     >           LPZ,LMASTB,LMASIN,LGENTB,LGENIN,LSUBTB,LSUBIN
      PARAMETER (IOUT=6,IUTYPE=4,IACTO=2,LRIND=256,
     >           MAXISO=246,MAXTEM=20,
     >           NCT=10,LPZ=9,LMASTB=MAXISO+9,
     >           LMASIN=LMASTB-4,LGENTB=6,LGENIN=LGENTB,
     >           LSUBTB=6*MAXTEM+28,LSUBIN=LSUBTB-12)
      INTEGER    MASTER(LMASTB),GENINX(LGENTB),SUBINX(LSUBTB),
     >           IWISO(MAXISO),IPRINT,NBISO,NPZ(LPZ),
     >           ITITLE(2*NCT)
      CHARACTER  CFILNA*64,HNAMIS(NBISO)*8,
     >           CWISO(MAXISO)*8,CTITLE(NCT)*8
      REAL       ZUBINX(LSUBTB),AWR(NBISO)
      INTEGER    IUNIT,IRISO,ISO,JSO,II,KDROPN
      EXTERNAL   KDROPN
      EQUIVALENCE (SUBINX(1),ZUBINX(1))
*----
*  ALLOCATABLE ARRAYS
*----
      INTEGER, ALLOCATABLE, DIMENSION(:) :: ICISO
*
      IF( CFILNA.EQ.' ' )THEN
        CALL XABORT('INFWIM: WIMS LIBRARY HAS NOT BEEN SET')
      ENDIF
*----
*  OPEN WIMSLIB AND READ TITLE
*----
      IRISO=0
      IUNIT=KDROPN(CFILNA,IACTO,IUTYPE,LRIND)
      IF(IUNIT.LE.0) CALL XABORT(
     > 'INFWIM: WIMS-AECL LIBRARY CANNOT BE OPENED FOR MIXS :'//CFILNA)
      CALL OPNIND(IUNIT,MASTER,LMASTB)
      CALL REDIND(IUNIT,MASTER,LMASIN,GENINX,LGENTB,1)
      IF(IPRINT.GT.0) THEN
        CALL REDIND(IUNIT,MASTER,LMASIN,ITITLE,2*NCT,2)
        CALL UPCKIC(ITITLE(1),CTITLE(1),NCT)
        WRITE(IOUT,6000) CFILNA
        WRITE(IOUT,'(1X,10A8)') (CTITLE(II),II=1,NCT)
      ENDIF
*----
*  READ GENERAL INDEX, ISOTOPES NAMES AND GROUP STRUCTURE
*----
      CALL REDIND(IUNIT,GENINX,LGENIN,NPZ,LPZ,1)
      CALL REDIND(IUNIT,GENINX,LGENIN,IWISO,NPZ(1),2)
      ALLOCATE(ICISO(2*NPZ(1)))
      CALL REDIND(IUNIT,GENINX,LGENIN,ICISO,2*NPZ(1),3)
      CALL UPCKIC(ICISO(1),CWISO(1),NPZ(1))
      IF(IPRINT.GE.100) THEN
        WRITE(IOUT,6200) (CWISO(II),II=1,NPZ(1))
      ENDIF
      DEALLOCATE(ICISO)
*----
* READ THROUGH DRAGON FILE AND ACCUMULATE WEIGHTS.
*----
      DO 120 ISO=1,NBISO
        DO 130 JSO=1,NPZ(1)
          IF(CWISO(JSO).EQ.HNAMIS(ISO)) THEN
            IRISO=JSO
            GO TO 131
          ENDIF
 130    CONTINUE
        WRITE(IOUT,9002) HNAMIS(ISO),CFILNA
        CALL XABORT('INFWIM: ISOTOPE NOT FOUND ON LIBRARY')
 131    CONTINUE
        IF(IPRINT.GT.0) THEN
          WRITE(IOUT,6001) HNAMIS(ISO)
        ENDIF
*----
*  READ SUB INDEX ASSOCIATED WITH ISOTOPE
*----
        CALL REDIND(IUNIT,MASTER,LMASIN,SUBINX,LSUBTB,IRISO+4)
        AWR(ISO)=ZUBINX(LSUBIN+3)
 120  CONTINUE
      CALL CLSIND(IUNIT)
*----
*  RETURN
*----
      RETURN
*----
*  FORMAT
*----
 9002 FORMAT(/' INFWIM: MATERIAL/ISOTOPE ',A8,' IS MISSING ON WIMS',
     >        ' FILE NAME ',A64)
 6000 FORMAT(/' PROCESSING WIMS LIBRARY NAME ',A64)
 6001 FORMAT(/'    PROCESSING ISOTOPE/MATERIAL = ',A12)
 6200 FORMAT(1X,'ISOTOPES ON LIBRARY'/6(4X,A8))
      END