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
|
*DECK DETINT
SUBROUTINE DETINT(NX,NY,NZ,NEL,NUN,LPARAB,MESHX,MESHY,MESHZ,
+ KEYF,FLUX,NGRP,DEVPOS,RESP,IPRT)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Driver for the interpolation.
*
*Copyright:
* Copyright (C) 2010 Ecole Polytechnique de Montreal.
*
*Author(s):
* E. Varin, M. Guyot
*
*Parameters:
* NX number of x mesh-splitted elements
* NY number of y mesh-splitted elements
* NZ number of z mesh-splitted elements
* NEL number of finite elements
* NUN number of unknowns
* LPARAB =.TRUE. if parabolic interpolation is performed
* MESHX regions coordinates according to x
* MESHY regions coordinates according to y
* MESHZ regions coordinates according to z
* KEYF keyflux recover from L_TRACk object
* FLUX flux for each mesh-splitted elements
* NGRP number of energy groups
* DEVPOS detector coordinates
* RESP flux reads by the detector
* IPRT printing index
*
*-----------------------------------------------------------------------
*
IMPLICIT NONE
*----
* SUBROUTINE ARGUMENTS
*----
INTEGER NX,NY,NZ,NEL,NUN,NGRP,IPRT,KEYF(NEL)
REAL MESHX(NX+1),MESHY(NY+1),MESHZ(NZ+1),FLUX(NUN,NGRP),RESP,
1 DEVPOS(6)
LOGICAL LPARAB
*----
* LOCAL VARIABLES
*----
INTEGER NXP1,NYP1,NZP1,NDET,I,IM
REAL COR(3)
REAL, ALLOCATABLE, DIMENSION(:) :: XCT,YCT,ZCT
*----
* SCRATCH STORAGE ALLOCATION
* XCT center coordinates of each mesh-splitted elements for x
* YCT center coordinates of each mesh-splitted elements for y
* ZCT center coordinates of each mesh-splitted elements for z
* COR center detector coordinates
*----
ALLOCATE(XCT(NX),YCT(NY),ZCT(NZ))
*
NXP1 = NX+1
NYP1 = NY+1
NZP1 = NZ+1
IF(IPRT.GT.1)
+ WRITE(6,*) 'INTERPOLATION POLYNOMIALE DES LECTURES AUX VANADIUM'
NDET = 1
*----
* CENTER MESH CALCULATION
*----
DO 10 I=1,NX
XCT(I) = (MESHX(I+1) + MESHX(I)) /2.
10 CONTINUE
DO 11 I=1,NY
YCT(I) = (MESHY(I+1) + MESHY(I)) /2.
11 CONTINUE
DO 12 I=1,NZ
ZCT(I) = (MESHZ(I+1) + MESHZ(I)) /2.
12 CONTINUE
*----
* CENTER DETECTOR COORDINATE
*----
DO 13 I=1,3
COR(I) = (DEVPOS(2*I) + DEVPOS(2*I-1)) /2.
13 CONTINUE
IF(LPARAB) THEN
*----
* POLYNOMIAL FLUX INTERPOLATION AT DETECTOR SITES
*----
CALL DETCTL(NX,NY,NZ,NEL,FLUX(1,2),RESP,NDET,XCT,YCT,ZCT,COR,
> KEYF,IPRT)
ELSE
IM = MAX(NX,NY)
IM = MAX(IM,NZ)
CALL DETSPL(NX,NY,NZ,IM,FLUX(1,2),RESP,NDET,XCT,YCT,ZCT,COR,
> KEYF,IPRT)
ENDIF
*----
* SCRATCH STORAGE DEALLOCATION
*----
DEALLOCATE(ZCT,YCT,XCT)
RETURN
END
|