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
|
*DECK LIBWRI
SUBROUTINE LIBWRI(NTMPR,NDILR,TMPISO,DILISO,TMPT,DILT,REST,RIT,
> XSOUT,XSCOR)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Resonance integral temperature and dilution interpolation.
*
*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
* NTMPR number of temperature tables.
* NDILR number of dilution tables.
* TMPISO temperature of isotope.
* DILISO dilution of isotope.
* TMPT sqrt(temperature) in table.
* DILT sqrt(dilution) in table.
* REST resonance rates input.
*
*Parameters: output
* XSOUT resonance integrals.
* XSCOR resonance integrals correction.
*
*Parameters: scratch
* RIT dummy vector.
*
*-----------------------------------------------------------------------
*
IMPLICIT NONE
REAL EPSRI,SQDILI
PARAMETER (EPSRI=0.0005,SQDILI=1.0E+5)
INTEGER NTMPR,NDILR
REAL TMPISO,DILISO,TMPT(NTMPR),DILT(NDILR),
> REST(NDILR,NTMPR),RIT(NDILR),XSOUT,XSCOR
INTEGER IDIL,NDILE,JDEPT,JFINT,IR,JD
REAL SQTD,SQTT,ALPHA,AIKINT,ASLOPE
*----
* SIMPLE LINEAR INTERFOLATION IN SQRT(TMP)
*----
SQTD=SQRT(DILISO)
XSOUT=0.0
DO 110 IDIL=NDILR,1,-1
IF(DILT(IDIL).LT.SQDILI) THEN
NDILE=IDIL
GO TO 115
ENDIF
110 CONTINUE
RETURN
115 CONTINUE
SQTT=SQRT(TMPISO)
IF(NTMPR.EQ.1) THEN
JDEPT=1
JFINT=1
ALPHA=0.0
ELSE
JDEPT=1
DO 100 IR=1,NTMPR-1
IF(SQTT.GE.TMPT(IR)) JDEPT=IR
100 CONTINUE
JFINT=JDEPT+1
ALPHA=(SQTT-TMPT(JDEPT))/(TMPT(JFINT)-TMPT(JDEPT))
ENDIF
DO 120 JD=1,NDILR
RIT(JD)=(1.-ALPHA)*REST(JD,JDEPT)+
> ALPHA*REST(JD,JFINT)
120 CONTINUE
IF(SQTD .GT. DILT(NDILE)) THEN
*----
* INTERPOLATE LINEARLY BETWEEN LAST DILUTION IN TABLE
* AND INFINITE DILUTION
*----
ASLOPE=(DILT(NDILE)/SQTD)**2
XSOUT=ASLOPE*RIT(NDILE)+(1.0-ASLOPE)*RIT(NDILR)
ELSE
*----
* AIKINT INTERPOLATION FOR DILUTION
*----
XSOUT=AIKINT(SQTD,DILT,RIT,NDILE,EPSRI)
ENDIF
XSCOR=XSCOR+XSOUT
RETURN
END
|