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
|
*DECK FLPNRM
SUBROUTINE FLPNRM(IPFLX,IPKIN,IPTRK,NMIX,NGRP,NEL,NUN,EVECT,FLUX,
1 MAT,VOL,IDL,HFAC,PTOT,ZNRM,IMPX)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Recover element-ordered fluxes associated with each mesh-splitted
* volume over the whole reactor core, normalize fluxes to a given
* total reactor power.
*
*Copyright:
* Copyright (C) 2007 Ecole Polytechnique de Montreal.
*
*Author(s):
* D. Sekki
*
*Parameters: input
* IPFLX pointer to flux information.
* IPKIN pointer to kinetics information.
* IPTRK pointer to tracking information.
* NMIX maximum number of material mixtures.
* NGRP total number of energy groups.
* NEL total number of finite elements.
* NUN total number of unknowns per group.
* HFAC h-factors over the reactor core.
* PTOT given total reactor power in watts.
* IMPX printing index (=0 for no print).
*
*Parameters: output
* FLUX normalized fluxes associated with each volume.
* MAT index-number of mixture assigned to each volume.
* VOL element-ordered mesh-splitted volumes.
* ZNRM flux normalization factor.
*
*Parameters: scratch
* EVECT
* IDL
*
*-----------------------------------------------------------------------
*
USE GANLIB
*----
* SUBROUTINE ARGUMENTS
*----
TYPE(C_PTR) IPFLX,IPKIN,IPTRK
INTEGER NUN,NEL,NGRP,NMIX,IMPX,IDL(NEL),MAT(NEL)
REAL FLUX(NEL,NGRP),EVECT(NUN,NGRP),HFAC(NMIX,NGRP),VOL(NEL)
DOUBLE PRECISION ZNRM,PTOT
*----
* LOCAL VARIABLES
*----
PARAMETER(IOUT=6)
TYPE(C_PTR) JPFLX
DOUBLE PRECISION XDRCST,EVJ
*----
* RECOVER INFORMATION
*----
EVECT(:NUN,:NGRP)=0.0
IF(C_ASSOCIATED(IPFLX)) THEN
* L_FLUX object
JPFLX=LCMGID(IPFLX,'FLUX')
DO 10 JGR=1,NGRP
CALL LCMGDL(JPFLX,JGR,EVECT(1,JGR))
10 CONTINUE
ELSE IF(C_ASSOCIATED(IPKIN)) THEN
* L_KINET object
CALL LCMGET(IPKIN,'E-VECTOR',EVECT)
ENDIF
*
MAT(:NEL)=0
CALL LCMGET(IPTRK,'MATCOD',MAT)
IDL(:NEL)=0
CALL LCMGET(IPTRK,'KEYFLX',IDL)
VOL(:NEL)=0.0
CALL LCMGET(IPTRK,'VOLUME',VOL)
*----
* FLUX NORMALIZATION
*----
EVJ=XDRCST('eV','J')
ZNRM=0.0D0
IF(IMPX.GT.0)WRITE(IOUT,1002)
FLUX(:NEL,:NGRP)=0.0
DO 25 JGR=1,NGRP
DO 20 IEL=1,NEL
IF(MAT(IEL).EQ.0)GOTO 20
FLUX(IEL,JGR)=EVECT(IDL(IEL),JGR)
ZNRM=ZNRM+HFAC(MAT(IEL),JGR)*FLUX(IEL,JGR)*VOL(IEL)*EVJ
20 CONTINUE
25 CONTINUE
ZNRM=PTOT/ZNRM
IF(IMPX.GT.0)WRITE(IOUT,1000) PTOT,ZNRM
DO 35 JGR=1,NGRP
DO 30 IEL=1,NEL
FLUX(IEL,JGR)=FLUX(IEL,JGR)*REAL(ZNRM)
30 CONTINUE
35 CONTINUE
RETURN
*
1000 FORMAT(/37H FLPNRM: GIVEN TOTAL REACTOR POWER =>,1P,E15.8,1X,
1 5HWATTS/37H FLPNRM: FLUX NORMALIZATION FACTOR =>,1P,E15.8)
1002 FORMAT(/53H FLPNRM: ** NORMALIZING FLUXES TO A GIVEN REACTOR POW,
1 5HER **)
END
|