summaryrefslogtreecommitdiff
path: root/Dragon/src/SYBT1D.f
blob: 8377d6782b450e0998ec1aa5e6fd925f1e70547b (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
*DECK SYBT1D
      SUBROUTINE SYBT1D(NPIJ,RAD,LGSPH,NGAUSS,Z)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Tracking for pij calculation using the method of Kavenoky in annular
* or spherical geometry. The tracking is used by SYBALC.
*
*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
* NPIJ    number of regions.
* RAD     radius of regions array.
* LGSPH   geometry flag (=.TRUE. for spherical geometry).
* NGAUSS  number of Gauss points.
*
*Parameters: output
* Z       tracking information.
*
*-----------------------------------------------------------------------
*
* REFERENCE:
* A. KAVENOKY, 'CALCUL ET UTILISATION DES PROBABILITES DE PREMIERE
* COLLISION POUR LES MILIEUX HETEROGENES A UNE DIMENSION: LES PROGRAMMES
* ALCOLL ET CORTINA', NOTE CEA-N-1077, COMMISSARIAT A L'ENERGIE
* ATOMIQUE, MARS 1969.
*----
*  SUBROUTINE ARGUMENTS
*----
      LOGICAL LGSPH
      INTEGER NPIJ,NGAUSS
      REAL RAD(0:NPIJ),Z(*)
*----
*  LOCAL VARIABLES
*----
      PARAMETER(MAXGAU=64,PI=3.1415926535)
      REAL ALPR(MAXGAU),PWR(MAXGAU)
*
      CALL ALGJP(NGAUSS,ALPR,PWR)
      SUM=0.0
      IZ=1
      RIK1=RAD(0)
      RI=1.0/RAD(NPIJ)
      DO 60 IK=1,NPIJ
      RIK2=RAD(IK)
      RD=RIK2-RIK1
      DO 50 IL=1,NGAUSS
      R=RIK2-RD*ALPR(IL)**2
      R2=R*R
      IZ=IZ+2
      IZ1=IZ
*
*----
*  STORE INTEGRATION WEIGHT (TIMES 2) FOR THIS LINE
*----
      AUX=RD*PWR(IL)*4.0
      IF(LGSPH) AUX=AUX*R*PI
      Z(IZ)=AUX
      CT1=0.
      CT2=0.
      DO 40 I=IK,NPIJ
      CT2=SQRT(RAD(I)**2-R2)
      IZ=IZ+1
*----
*  STORE LENGTH OF PATH
*----
      Z(IZ)=CT2-CT1
      CT1=CT2
   40 CONTINUE
*----
*  STORE COS(PHI)*INTEGRATION WEIGHT ( TIMES 2 )
*----
      Z(IZ1-1)=Z(IZ1)*CT2*RI
      SUM=SUM+AUX/CT2
   50 CONTINUE
      RIK1=RIK2
   60 CONTINUE
      IZ=IZ+1
      IF(LGSPH) THEN
         Z(1)=SUM/(PI*2.0*RAD(NPIJ))
      ELSE
         Z(1)=SUM/PI
      ENDIF
      RETURN
      END