summaryrefslogtreecommitdiff
path: root/Dragon/src/READBH.f
blob: 51496bfce593af131f6bfff5f1064a3d889a19b3 (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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
*DECK READBH
      SUBROUTINE READBH (MAXPTS,IPGEOM,IR,IR2,NREG,NREG2,MAT,VOL,NG,
     1 NSMAX,MICRO,NS,IBI,RS,FRACT,VOLK,IMPX,IDIL,MIXGR)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Recover the input data for the double heterogeneity option (Bihet).
*
*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): A. Hebert
*
*Parameters: input
* MAXPTS  allocated storage for arrays of dimension NREG.
* IPGEOM  pointer to the geometry LCM object (L_GEOM signature).
* IR2     number of ordinary and composite mixtures (a mixture that
*         include a micro structure).
* NREG2   number of volumes in the macro geometry.
* NG      number of different kind of micro structures. A kind of
*         micro structure is characterized by the radius of its
*         tubes or shells. All the micro volumes of the same kind
*         should own the same nuclear properties in a given volume
*         of the macro geometry.
* NSMAX   maximum number of volumes (tubes or shells) in each kind
*         of micro structure).
* IBI     type of composite mixture in each volume of the macro
*         geometry. If IBI(IKK) is greater than IR, the volume IKK
*         contains a micro structure.
* IMPX    print flag (equal to zero for no print).
*
*Parameters: input/output
* VOL     volumes of the macro geometry on input and
*         volumes of the composite geometry at output.
*
*Parameters: output
* IR      number of ordinary mixtures.
* NREG    number of volumes in the composite geometry.
* MAT     index-number of the mixture type assigned to each volume
*         of the composite geometry.
* MICRO   type of micro volumes: =3 cylinder; =4 sphere.
* NS      number of tubes or shells in each kind of micro structure.
* RS      radius of the micro volumes.
* FRACT   volumic fractions of each type of micro volumes in each
*         ordinary or composite mixture.
* VOLK    volumic fractions of the tubes or shells in the micro volumes.
* IDIL    elementary mixture indices in the diluent of the composite
*         mixtures.
* MIXGR   elementary mixture indices in the micro structures.
*
*-----------------------------------------------------------------------
*
      USE GANLIB
*----
*  SUBROUTINE ARGUMENTS
*----
      TYPE(C_PTR) IPGEOM
      INTEGER MAXPTS,IR,IR2,NREG,NREG2,MAT(MAXPTS),NG,NSMAX,MICRO,
     1 NS(NG),IBI(NREG2),IMPX,IDIL(IR2),MIXGR(NSMAX,NG,IR2)
      REAL VOL(MAXPTS),RS(NSMAX+1,NG),FRACT(NG,IR2),VOLK(NG,NSMAX)
*----
*  LOCAL VARIABLES
*----
      PARAMETER(NSTATE=40)
      CHARACTER GEONAM*12,HSMG*131,TEXT12*12
      LOGICAL EMPTY,LCM
      INTEGER ISTATE(NSTATE)
      INTEGER, ALLOCATABLE, DIMENSION(:) :: MILIEU
      REAL, ALLOCATABLE, DIMENSION(:) :: FTEMP
*----
*  SCRATCH STORAGE ALLOCATION
*----
      ALLOCATE(MILIEU(IR2))
      ALLOCATE(FTEMP(IR2))
*
      IDIL(:IR2)=0
      MIXGR(:NSMAX,:NG,:IR2)=0
      CALL LCMINF(IPGEOM,GEONAM,TEXT12,EMPTY,ILONG,LCM)
      CALL LCMGET(IPGEOM,'STATE-VECTOR',ISTATE)
      NMILG=ISTATE(3)
      MICRO=ISTATE(5)
      IF(NMILG.GT.IR2) CALL XABORT('READBH: INVALID VALUE FOR IR2.')
      CALL LCMGET(IPGEOM,'NS',NS)
      CALL LCMGET(IPGEOM,'RS',RS)
      CALL LCMGET(IPGEOM,'FRACT',FRACT)
      CALL LCMGET(IPGEOM,'MILIE',MILIEU)
      CALL LCMGET(IPGEOM,'MIXDIL',IDIL)
      CALL LCMGET(IPGEOM,'MIXGR',MIXGR)
*
      DO 30 J=1,NG
      FACT=RS(NS(J)+1,J)**(MICRO-1)
      W=0.0
      DO 20 K=1,NS(J)
      ZZZ=RS(K+1,J)**(MICRO-1)/FACT
      VOLK(J,K)=ZZZ-W
      W=ZZZ
   20 CONTINUE
   30 CONTINUE
*
      IND1=IR2
      DO 40 I=1,NMILG
      IF(MILIEU(I).GT.IR2) THEN
         WRITE (HSMG,390) MILIEU(I),IR2
         CALL XABORT(HSMG)
      ENDIF
      IND1=MIN(IND1,MILIEU(I))
   40 CONTINUE
*----
*  SET-UP THE NEW VOLUMES
*----
      NREG=NREG2
      DO 90 IKK=1,NREG2
      MAT(IKK)=IBI(IKK)
      IF(IBI(IKK).GE.IND1) THEN
         IND=0
         DO 50 I=1,NMILG
         IF(MILIEU(I).EQ.IBI(IKK)) IND=I
   50    CONTINUE
         IF(IND.EQ.0) THEN
            WRITE(HSMG,'(29HREADBH: A COMPOSITE MIXTURE (,I5,7H) IS NO,
     1      10HT DEFINED.)') IBI(IKK)
            CALL XABORT(HSMG)
         ENDIF
         DILF=1.0
         DO 60 J=1,NG
         DILF=DILF-FRACT(J,IND)
   60    CONTINUE
         VHET=VOL(IKK)
         MAT(IKK)=IDIL(IND)
         VOL(IKK)=VHET*DILF
         DO 80 J=1,NG
         FRT=FRACT(J,IND)
         IF(FRT.GT.0.00001) THEN
            FACT=RS(NS(J)+1,J)**(MICRO-1)
            W=0.0
            DO 70 K=1,NS(J)
            ZZZ=RS(K+1,J)**(MICRO-1)/FACT
            NREG=NREG+1
            MAT(NREG)=MIXGR(K,J,IND)
            VOL(NREG)=VHET*FRT*(ZZZ-W)
            W=ZZZ
   70       CONTINUE
          ENDIF
   80     CONTINUE
      ENDIF
   90 CONTINUE
      IF(NREG.GT.MAXPTS) CALL XABORT('READBH: MAXPTS IS TOO SMALL.')
      IR=0
      DO 100 I=1,NREG
      IR=MAX(IR,MAT(I))
  100 CONTINUE
      IF(IR+1.GT.IR2) CALL XABORT('READBH: INVALID MIX NUMBERS.')
      DO IND=1,IR2-IR
        IF(IDIL(IND).EQ.0) THEN
          WRITE(HSMG,'(15HREADBH: MIXTURE,I5,22H IS NOT USED IN THE GE,
     1    7HOMETRY.)') IR+IND-1
          CALL XABORT(HSMG)
        ENDIF
      ENDDO
      DO 135 J=1,NG
      DO 110 IND=1,NMILG
      FTEMP(IND)=FRACT(J,IND)
  110 CONTINUE
      DO 120 IND=1,IR2
      FRACT(J,IND)=0.0
  120 CONTINUE
      DO 130 IND=1,NMILG
      FRACT(J,MILIEU(IND))=FTEMP(IND)
  130 CONTINUE
  135 CONTINUE
*
      IF(IMPX.GE.1) THEN
         WRITE (6,300) GEONAM
         IF(MICRO.EQ.3) THEN
            WRITE (6,'(44H THE MICRO STRUCTURE IS MADE OF TUBES OR CYL,
     1      7HINDERS./)')
         ELSE IF(MICRO.EQ.4) THEN
            WRITE (6,'(44H THE MICRO STRUCTURE IS MADE OF SPHERES OR S,
     1      16HPHERICAL SHELLS./)')
         ENDIF
         WRITE (6,360) NREG2,NG,NSMAX
         WRITE (6,370) IR+1,IR2
         DO 140 J=1,NG
         WRITE (6,310) J
         WRITE (6,320) (RS(K,J),K=1,NS(J)+1)
         WRITE (6,330)
         WRITE (6,320) (FRACT(J,IBI(IKK)),IKK=1,NREG2)
  140    CONTINUE
         WRITE (6,'(///)')
         WRITE (6,400) NREG,MAXPTS,IR
      ENDIF
*----
*  SCRATCH STORAGE DEALLOCATION
*----
      DEALLOCATE(FTEMP)
      DEALLOCATE(MILIEU)
      RETURN
*
  300 FORMAT (///50H BIHET: INTRODUCTION OF A MICRO STRUCTURE IN THE M,
     1 26HACRO GEOMETRY LOCATED IN ',A12,2H'./)
  310 FORMAT (//23H MICRO STRUCTURE NUMBER,I4//20H RADIUS OF THE MICRO,
     1 17H TUBES OR SHELLS:)
  320 FORMAT (1X,1P,10E12.5)
  330 FORMAT (/53H VOLUMIC CONCENTRATIONS OF THE MICRO STRUCTURE IN EAC,
     1 31HH VOLUME OF THE MACRO GEOMETRY:)
  360 FORMAT (/42H NUMBER OF VOLUMES IN THE MACRO GEOMETRY =,I6/
     1         38H NUMBER OF KINDS OF MICRO STRUCTURES =,I6/
     2         49H MAXIMUM NUMBER OF VOLUMES IN A MICRO STRUCTURE =,I6/)
  370 FORMAT (/51H THE INDEX-NUMBERS OF THE MIXTURES WITH A MICRO STR,
     1 21HUCTURE VARIES BETWEEN,I6,4H AND,I6,1H.)
  390 FORMAT (34HREADBH: THE INPUT MIXTURE NUMBER (,I6,12H) IS GREATER,
     1 10H THAN IR (,I6,2H ))
  400 FORMAT (/20H NUMBER OF VOLUMES =,I6,5X,22HAVAILABLE STORAGE: MAX,
     1 5HPTS =,I6/21H NUMBER OF MIXTURES =,I6/)
      END