summaryrefslogtreecommitdiff
path: root/Donjon/src/SIMDIS.f
blob: 8357b60bb7e232990ab261ebe3ee0c3f77decc74 (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
*DECK SIMDIS
      SUBROUTINE SIMDIS(LSET,NCH,NB,HCYC,NASMB1,ASMB1,FORM,ASMB1B,ZONE,
     > BURNUP,OBURNU)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Axial normalization of the burnup distribution using information from
* another cycle.
*
*Copyright:
* Copyright (C) 2013 Ecole Polytechnique de Montreal
*
*Author(s): 
* A. Hebert
*
*Parameters: input/output
* LSET    type of normalization (=.true.: use FORM info; =.false: use
*         an existing assembly).
* NCH     number of assemblies or number of quart-of-assemblies.
* NB      number of axial burnup subdivisions in an assembly.
* HCYC    name of cycle.
* NASMB1  number of assemblies to set.
* ASMB1   group of assembly names, as defined in the fuel map, to set
*         at specific burnup.
* FORM    axial form factor used if LSET=.true.
* ASMB1B  assembly name, as defined in the fuel map, to which we
*         want to use the burnup distribution if LSET=.false.
* ZONE    default assembly or quart-of-assembly names as defined in
*         the fuel map.
* BURNUP  burnups during a refuelling cycle.
* OBURNU  burnups during a previous refuelling cycle.
*
*-----------------------------------------------------------------------
*
*----
*  SUBROUTINE ARGUMENTS
*----
      LOGICAL LSET
      INTEGER NCH,NB,NASMB1
      CHARACTER HCYC*12,ASMB1(NASMB1)*4,ASMB1B*4,ZONE(NCH)*4
      REAL FORM(NB),BURNUP(NCH,NB),OBURNU(NCH,NB)
*----
*  LOCAL VARIABLES
*----
      CHARACTER HSMG*131
      CHARACTER(LEN=4), ALLOCATABLE, DIMENSION(:) :: ZONE2
*----
*  SCRATCH STORAGE ALLOCATION
*----
      ALLOCATE(ZONE2(NCH))
*
      ZNUM=0.0
      ZDEN=0.0
      DO IASMB1=1,NASMB1
        DO 10 ICH=1,NCH
        ZONE2(ICH)=ZONE(ICH)
   10   CONTINUE
        DO ICH=1,NCH
          IF(ZONE(ICH).EQ.ASMB1(IASMB1)) THEN
            IF(LSET) THEN
              ZNUM=0.0
              ZDEN=0.0
              DO IB=1,NB
                ZNUM=ZNUM+BURNUP(ICH,IB)
                ZDEN=ZDEN+FORM(IB)
              ENDDO
              DO IB=1,NB
                BURNUP(ICH,IB)=FORM(IB)*ZNUM/ZDEN
              ENDDO
            ELSE
              IOLD=0
              DO ICH2=1,NCH
                IF(ZONE2(ICH2).EQ.ASMB1B) THEN
                  IOLD=ICH2
                  ZONE2(ICH2)=' '
                  GO TO 20
                ENDIF
              ENDDO
              WRITE(HSMG,'(33H@SIMDIS: UNABLE TO FIND ASSEMBLY ,A4,
     >        25HIN THE FUEL MAP AT CYCLE ,A12,1H.)') ASMB1(IASMB1),
     >        HCYC
              CALL XABORT(HSMG)
   20         ZNUM=0.0
              ZDEN=0.0
              DO IB=1,NB
                ZNUM=ZNUM+BURNUP(ICH,IB)
                ZDEN=ZDEN+OBURNU(IOLD,IB)
              ENDDO
              DO IB=1,NB
                BURNUP(ICH,IB)=OBURNU(IOLD,IB)*ZNUM/ZDEN
              ENDDO
            ENDIF
            CYCLE
          ENDIF
        ENDDO
      ENDDO
*----
*  SCRATCH STORAGE DEALLOCATION
*----
      DEALLOCATE(ZONE2)
      RETURN
      END