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
|
*DECK LIBWTE
SUBROUTINE LIBWTE(IACT,ITXS,NGROUP,NGTHER,NTMP,NF,TERP,SCAT,
> SIGS,XSNG,SIGF,XSFI,TRAN,TMPXS,TMPSC)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Perform temperature interpolation for WIMS-AECL or WIMS-D4 XS.
*
*Copyright:
* Copyright (C) 1997 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
* IACT Action:
* = 1 initialize before adding;
* = 2 only add.
* ITXS type:
* = 1 all cross sections;
* = 2 only scattering.
* NGROUP number of groups.
* NGTHER number of thermal groups.
* NTMP number of temperature.
* NF flag for fissile.
* TERP temperature coefficients.
*
*Parameters: input/output
* SCAT complete scattering matrix
* SCAT(JG,IG) is from IG to JG.
* SIGS total scattering out of group.
* XSNG (n,g) XS.
* SIGF nu*fission XS.
* XSFI fission XS.
* TRAN transport XS.
*
*Parameters: scratch
* TMPXS temperature dependent vect XS.
* TMPSC temperature dependent scat XS.
*
*Comments:
* WIMS-AECL library parameters
* MAXISO : max. nb. of iso = 246
* MLDEP : maximum number of reaction per
* isotope = MAXISO +4
* LPZ : length of parameter array = 9
* LMASTB : length of mst tab = MAXISO+9
* LMASIN : length of mst idx = LMASTB-4
* LGENTB : length of gen tab = 6
* LGENIN : length of gen idx = LGENTB
* MASTER : master index array
* GENINX : general index array
* NPZ : list of main parameters
*
*-----------------------------------------------------------------------
*
IMPLICIT NONE
*----
* INTERFACE VARIABLES
*----
INTEGER IACT,ITXS,NGROUP,NGTHER,NTMP,NF
DOUBLE PRECISION TERP(NTMP)
REAL SCAT(NGROUP,NGROUP),SIGS(NGROUP),
1 XSNG(NGROUP),SIGF(NGROUP),XSFI(NGROUP),
2 TRAN(NGROUP),TMPXS(NGROUP,5,NTMP),
3 TMPSC(NGROUP,NGROUP,NTMP)
*----
* LOCAL VARIABLES
*----
INTEGER IGF,ITM,IGD,NGD
REAL RTERP
*----
* INITIALIZED IF REQUIRED
*----
NGD=NGROUP-NGTHER+1
IF(IACT.EQ.1) THEN
IF(ITXS.EQ.1) THEN
XSNG(NGD:NGD+NGTHER-1)=0.0
TRAN(NGD:NGD+NGTHER-1)=0.0
IF(NF.GT.1) THEN
SIGF(NGD:NGD+NGTHER-1)=0.0
XSFI(NGD:NGD+NGTHER-1)=0.0
ENDIF
ENDIF
IF(ITXS.GE.1) THEN
SIGS(NGD:NGD+NGTHER-1)=0.0
DO 110 IGD=NGD,NGROUP
SCAT(:NGROUP,IGD)=0.0
110 CONTINUE
ENDIF
ENDIF
*----
* INTERPOLATE STANDARD CROSS SECTIONS IN TEMPERATURE
*----
IF(ITXS.EQ.1) THEN
DO 120 ITM=1,NTMP
RTERP=REAL(TERP(ITM))
IF(RTERP.NE.0.0) THEN
DO 121 IGD=NGD,NGROUP
TRAN(IGD)=TRAN(IGD)+RTERP*TMPXS(IGD,1,ITM)
XSNG(IGD)=XSNG(IGD)+RTERP*TMPXS(IGD,2,ITM)
IF(NF.GT.1) THEN
SIGF(IGD)=SIGF(IGD)+RTERP*TMPXS(IGD,3,ITM)
XSFI(IGD)=XSFI(IGD)+RTERP*TMPXS(IGD,4,ITM)
ENDIF
121 CONTINUE
ENDIF
120 CONTINUE
ENDIF
*----
* INTERPOLATE SCATTERING CROSS SECTIONS IN TEMPERATURE
*----
IF(ITXS.GE.1) THEN
DO 130 ITM=1,NTMP
RTERP=REAL(TERP(ITM))
IF(RTERP.NE.0.0D0) THEN
DO 131 IGD=NGD,NGROUP
SIGS(IGD)=SIGS(IGD)+RTERP*TMPXS(IGD,5,ITM)
DO 132 IGF=1,NGROUP
SCAT(IGF,IGD)=SCAT(IGF,IGD)+RTERP*TMPSC(IGF,IGD,ITM)
132 CONTINUE
131 CONTINUE
ENDIF
130 CONTINUE
ENDIF
RETURN
END
|