summaryrefslogtreecommitdiff
path: root/Donjon/src/TAVGEX.f
blob: 34a4f4e522bbff68f784fa21854291c031e4271a (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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
*DECK TAVGEX
      SUBROUTINE TAVGEX(IPMAP,IPPOW,NCH,NCOMB,NX,NY,NZ,IMPX)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Compute the core-average exit burnup and channel refuelling rates.
*
*Copyright:
* Copyright (C) 2007 Ecole Polytechnique de Montreal.
*
*Author(s): 
* D. Sekki
*
*Parameters: input/output
* IPMAP  pointer to fuel-map information.
* IPPOW  pointer to power information.
* NCH    number of reactor channels.
* NCOMB  number of combustion zones.
* NX     number of elements along x-axis in fuel map.
* NY     number of elements along y-axis in fuel map.
* NZ     number of elements along z-axis in fuel map.
* IMPX   printing index (=0 for no print).
*
*-----------------------------------------------------------------------
*
      USE GANLIB
*----
*  SUBROUTINE ARGUMENTS
*----
      TYPE(C_PTR) IPMAP,IPPOW
      INTEGER NCH,NCOMB,NX,NY,NZ,IMPX
*----
*  LOCAL VARIABLES
*----
      PARAMETER(IOUT=6)
      INTEGER MIX(NX*NY*NZ),BZONE(NCH),NSCH(NCH),NAMX(NX),NAMY(NY)
      REAL BVAL(NCOMB),RATE(NCH),POWC(NCH)
      DOUBLE PRECISION SUMR,SUMB
      CHARACTER TEXT*12,CHANX*2,CHANY*2
*----
*  RECOVER INFORMATION
*----
      MIX(:NX*NY*NZ)=0
      CALL LCMGET(IPMAP,'BMIX',MIX)
*     CHANNEL POWERS
      POWC(:NCH)=0.0
      CALL LCMGET(IPPOW,'POWER-CHAN',POWC)
*     REFUELLING SCHEME
      NSCH(:NCH)=0
      CALL LCMGET(IPMAP,'REF-SCHEME',NSCH)
*     AVERAGE EXIT BURNUPS
      BVAL(:NCOMB)=0.0
      CALL LCMGET(IPMAP,'BURN-AVG',BVAL)
*     COMBUSTION-ZONE INDEX
      BZONE(:NCH)=0
      CALL LCMGET(IPMAP,'B-ZONE',BZONE)
*     CHANNEL NAMES
      NAMX(:NX)=0
      CALL LCMGET(IPMAP,'XNAME',NAMX)
      NAMY(:NY)=0
      CALL LCMGET(IPMAP,'YNAME',NAMY)
*----
*  CALCULATION OVER EACH CHANNEL
*----
      IF(IMPX.GT.0)WRITE(IOUT,1000)
      RATE(:NCH)=0.0
      IEL=0
      ICH=0
      SUMR=0.0D0
      SUMB=0.0D0
      DO 15 J=1,NY
      DO 10 I=1,NX
      IEL=IEL+1
      IF(MIX(IEL).EQ.0)GOTO 10
      ICH=ICH+1
*     REFUELLING RATE
      RATE(ICH)=POWC(ICH)/BVAL(BZONE(ICH))
      SUMR=SUMR+RATE(ICH)
      SUMB=SUMB+BVAL(BZONE(ICH))*RATE(ICH)
      IF(IMPX.LT.4)GOTO 10
*     PRINT RATE
      WRITE(TEXT,'(A9,I3.3)')'CHANNEL #',ICH
      WRITE(CHANX,'(A2)') (NAMX(I))
      WRITE(CHANY,'(A2)') (NAMY(J))
      WRITE(IOUT,1001)TEXT,CHANY,CHANX,NSCH(ICH),RATE(ICH)
   10 CONTINUE
   15 CONTINUE
*     EXIT BURNUP
      BEXIT=REAL(SUMB/SUMR)
      IF(IMPX.EQ.0)GOTO 20
      IF(BEXIT.LT.10000.)THEN
        WRITE(IOUT,1002)BEXIT
      ELSE
        WRITE(IOUT,1003)BEXIT
      ENDIF
   20 CALL LCMPUT(IPMAP,'B-EXIT',1,2,BEXIT)
      CALL LCMPUT(IPMAP,'REF-RATE',NCH,2,RATE)
      RETURN
*
 1000 FORMAT(/1X,'**',1X,'COMPUTING CHANNEL',
     1 1X,'REFUELLING',1X,'RATES',1X,'**'/)
 1001 FORMAT(5X,A12,5X,'NAME:',1X,A2,A2,5X,'RE',
     1 'F-SCHEME:',1X,I2,5X,'REF-RATE: ',F6.4/)
 1002 FORMAT(/1X,'CORE-AVERAGE EXIT BURNUP',
     1  1X,'=',1X,F7.2,1X,'MW*DAY/T'/)
 1003 FORMAT(/1X,'CORE-AVERAGE EXIT BURNUP',
     1  1X,'=',1X,F8.2,1X,'MW*DAY/T'/)
      END