blob: 5a0d57a7fafa4cd8a1abf98c5c0dcb3d44a6ce97 (
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
|
*DECK MCGTRK
SUBROUTINE MCGTRK(NFI,NZON,NSEG,NOM,H)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Unfold a tracking line (MOCC) for connection matrices.
*
*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): R. Le Tellier
*
*Parameters: output
* NFI number of regions (volumes and surfaces).
* NZON index-number of the mixture type assigned to each volume.
*Parameters: input/output
* NSEG number of segment of this track folded/unfolded.
* NOM segment index array of this track folded/unfolded.
* H segment length array of this track folded/unfolded.
*
*Comments:
* Preconditioner calculation.
* ex: -5 2 3 1 -4 -4 2 1 -1 -1 1 -5
* r v v r r r
* --> 2 3 1 -4 2 1
* where r stands for reflective boundary condition,
* v \\ void \\ .
*
*-----------------------------------------------------------------------
*
*----
* SUBROUTINE ARGUMENTS
*----
INTEGER NFI,NZON(NFI),NSEG,NOM(NSEG)
DOUBLE PRECISION H(NSEG)
*----
* LOCAL VARIABLES
*----
INTEGER IBCV
PARAMETER(IBCV=-7)
INTEGER I,IP,NOMI,NZI
*----
I=1
IP=0
DO WHILE (I.LE.NSEG)
NOMI=NOM(I)
NZI=NZON(NOMI)
IF ((NZI.GE.0).OR.(NZI.EQ.IBCV)) THEN
* this cell is a volume or a voided boundary
IF ((IP.GE.1).AND.(NOM(IP).EQ.NOMI)) THEN
H(IP)=H(IP)+H(I)
ELSE
IP=IP+1
NOM(IP)=NOM(I)
H(IP)=H(I)
ENDIF
ENDIF
I=I+1
ENDDO
IF ((NOM(IP).EQ.NOM(1)).AND.(IP.GT.1)) THEN
H(1)=H(1)+H(IP)
IP=IP-1
ENDIF
NSEG=IP
*
RETURN
END
|