summaryrefslogtreecommitdiff
path: root/Donjon/src/SCRTOC.f
blob: f1cca530f57a9a702ec6a0922872eae199a4e644 (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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
*DECK SCRTOC
      SUBROUTINE SCRTOC(IPSAP)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Print the table of content of a Saphyb.
*
*Copyright:
* Copyright (C) 2012 Ecole Polytechnique de Montreal
*
*Author(s): 
* A. Hebert
*
*Parameters: input
* IPSAP   address of the multidimensional Saphyb object.
*
*-----------------------------------------------------------------------
*
      USE GANLIB
      IMPLICIT NONE
*----
*  SUBROUTINE ARGUMENTS
*----
      TYPE(C_PTR) IPSAP
*----
*  LOCAL VARIABLES
*----
      INTEGER, PARAMETER::IOUT=6
      INTEGER, PARAMETER::MAXLAM=20
      INTEGER, PARAMETER::MAXPAR=50
      INTEGER, PARAMETER::MAXVAL=200
      INTEGER I, ILENG,ILONG, IPAR, ITYLCM, 
     & NADRX, NCALS, NGROUP, NISO, NISOTS, NLAM, NMAC, NMIL, NPAR, 
     & NPARL, NPRC, NREA, NSURFD
      INTEGER DIMSAP(50),NVALUE(MAXPAR),VINTE(MAXVAL)
      REAL VREAL(MAXVAL)
      CHARACTER PARKEY(MAXPAR)*4,PARTYP(MAXPAR)*4,PARFMT(MAXPAR)*8,
     1 VCHAR(MAXVAL)*12,RECNAM*12,NAMLAM(MAXLAM)*8
      CHARACTER(LEN=8), ALLOCATABLE, DIMENSION(:) :: TEXT8
      CHARACTER(LEN=12), ALLOCATABLE, DIMENSION(:) :: TEXT12
*----
*  DIMSAP INFORMATION
*----
      CALL LCMLEN(IPSAP,'DIMSAP',ILENG,ITYLCM)
      IF(ILENG.EQ.0) CALL XABORT('SCRTOC: INVALID SAPHYB.')
      CALL LCMGET(IPSAP,'DIMSAP',DIMSAP)
      NLAM=DIMSAP(3)   ! number of radioactive decay reactions
      NREA=DIMSAP(4)   ! number of neutron-induced reactions
      NISO=DIMSAP(5)   ! number of particularized isotopes
      NMAC=DIMSAP(6)   ! number of macroscopic sets
      NMIL=DIMSAP(7)   ! number of mixtures
      NPAR=DIMSAP(8)   ! number of global parameters
      NPARL=DIMSAP(11) ! number of local variables
      NADRX=DIMSAP(18) ! number of address sets
      NCALS=DIMSAP(19) ! number of elementary calculations in the Saphyb
      NGROUP=DIMSAP(20) ! number of energy groups
      NPRC=DIMSAP(31)   ! number of delayed neutron precursor groups
      NISOTS=DIMSAP(32) ! maximum number of isotopes in output tables
      WRITE(IOUT,'(/38H SCRTOC: table of content information:)')
      WRITE(IOUT,'(42H   number of radioactive decay reactions =,I3)')
     1 NLAM
      WRITE(IOUT,'(40H   number of neutron-induced reactions =,I3)')
     1 NREA
      WRITE(IOUT,'(38H   number of particularized isotopes =,I4)') NISO
      WRITE(IOUT,'(31H   number of macroscopic sets =,I2)') NMAC
      WRITE(IOUT,'(23H   number of mixtures =,I5)') NMIL
      WRITE(IOUT,'(32H   number of global parameters =,I4)') NPAR
      WRITE(IOUT,'(30H   number of local variables =,I4)') NPARL
      WRITE(IOUT,'(27H   number of address sets =,I4)') NADRX
      WRITE(IOUT,'(27H   number of calculations =,I7)') NCALS
      WRITE(IOUT,'(28H   number of energy groups =,I4)') NGROUP
      WRITE(IOUT,'(31H   number of precursor groups =,I4)') NPRC
      WRITE(IOUT,'(48H   maximum number of isotopes in output tables =,
     1 I4/)') NISOTS
      IF(NLAM.GT.0) THEN
        CALL LCMSIX(IPSAP,'constphysiq',1)
          IF(NLAM.GT.MAXLAM) CALL XABORT('SCRTOC: MAXLAM OVERFLOW')
          CALL LCMGTC(IPSAP,'NOMLAM',8,NLAM,NAMLAM)
          WRITE(IOUT,'(40H   names of radioactive decay reactions:/
     1    (5X,5A10))') (NAMLAM(I),I=1,NLAM)
        CALL LCMSIX(IPSAP,' ',2)
      ENDIF
      CALL LCMSIX(IPSAP,'contenu',1)
        IF(NREA.GT.0) THEN
          ALLOCATE(TEXT12(NREA))
          CALL LCMGTC(IPSAP,'NOMREA',12,NREA,TEXT12)
          WRITE(IOUT,'(38H   names of neutron-induced reactions:/
     1    (5X,A12,2X,A12,2X,A12,2X,A12,2X,A12))') (TEXT12(I),I=1,NREA)
          DEALLOCATE(TEXT12)
        ENDIF
        IF(NISO.GT.0) THEN
          ALLOCATE(TEXT8(NISO))
          CALL LCMGTC(IPSAP,'NOMISO',8,NISO,TEXT8)
          WRITE(IOUT,'(36H   names of particularized isotopes:/
     1    (5X,A8,2X,A8,2X,A8,2X,A8,2X,A8))') (TEXT8(I),I=1,NISO)
          DEALLOCATE(TEXT8)
        ENDIF
        IF(NMAC.GT.0) THEN
          ALLOCATE(TEXT8(NMAC))
          CALL LCMGTC(IPSAP,'NOMMAC',8,NMAC,TEXT8)
          WRITE(IOUT,'(29H   names of macroscopic sets:/
     1    (5X,A8,2X,A8,2X,A8,2X,A8,2X,A8))') (TEXT8(I),I=1,NMAC)
          DEALLOCATE(TEXT8)
        ENDIF
      CALL LCMSIX(IPSAP,' ',2)
      CALL LCMSIX(IPSAP,'geom',1)
      CALL LCMLEN(IPSAP,'outgeom',ILONG,ITYLCM)
      IF(ILONG.NE.0) THEN
        CALL LCMSIX(IPSAP,'outgeom',1)
        CALL LCMLEN(IPSAP,'SURF',NSURFD,ITYLCM)
        WRITE(IOUT,'(36H   number of discontinuity factors =,I4/)')
     1  NSURFD
        CALL LCMSIX(IPSAP,' ',2)
      ENDIF
      CALL LCMSIX(IPSAP,' ',2)
*----
*  GLOBAL PARAMETERS INFORMATION
*----
      IF(NPAR.GT.MAXPAR) CALL XABORT('SCRTOC: MAXPAR OVERFLOW')
      CALL LCMSIX(IPSAP,'paramdescrip',1)
        CALL LCMGET(IPSAP,'NVALUE',NVALUE)
        CALL LCMGTC(IPSAP,'PARKEY',4,NPAR,PARKEY)
        CALL LCMGTC(IPSAP,'PARTYP',4,NPAR,PARTYP)
        CALL LCMGTC(IPSAP,'PARFMT',8,NPAR,PARFMT)
      CALL LCMSIX(IPSAP,' ',2)
      CALL LCMSIX(IPSAP,'paramvaleurs',1)
        DO IPAR=1,NPAR
          WRITE(IOUT,'(25H SCRTOC: global parameter,A5,8H of type,A5,
     1    1H:)') PARKEY(IPAR),PARTYP(IPAR)
          IF(NVALUE(IPAR).GT.MAXVAL) CALL XABORT('SCRTOC: MAXVAL OVERF'
     1    //'LOW')
          WRITE(RECNAM,'(''pval'',I8)') IPAR
          IF(PARFMT(IPAR).EQ.'ENTIER') THEN
            CALL LCMGET(IPSAP,RECNAM,VINTE)
            WRITE(IOUT,'(20H   TABULATED POINTS=,1P,6I12/(20X,6I12))')
     1      (VINTE(I),I=1,NVALUE(IPAR))
          ELSE IF(PARFMT(IPAR).EQ.'FLOTTANT') THEN
            CALL LCMGET(IPSAP,RECNAM,VREAL)
            WRITE(IOUT,'(20H   TABULATED POINTS=,1P,6E12.4/(20X,
     1      6E12.4))') (VREAL(I),I=1,NVALUE(IPAR))
          ELSE IF(PARFMT(IPAR).EQ.'CHAINE') THEN
            CALL LCMGTC(IPSAP,RECNAM,12,NVALUE(IPAR),VCHAR)
            WRITE(IOUT,'(20H   TABULATED POINTS=,2X,6A12/(22X,6A12))')
     1      (VCHAR(I),I=1,NVALUE(IPAR))
          ENDIF
        ENDDO
      CALL LCMSIX(IPSAP,' ',2)
*----
*  LOCAL VARIABLES INFORMATION
*----
      IF(NPARL.GT.0) THEN
        IF(NPARL.GT.MAXPAR) CALL XABORT('SCRTOC: MAXPAR OVERFLOW')
        CALL LCMSIX(IPSAP,'varlocdescri',1)
          CALL LCMGTC(IPSAP,'PARKEY',4,NPARL,PARKEY)
          CALL LCMGTC(IPSAP,'PARTYP',4,NPARL,PARTYP)
          CALL LCMGTC(IPSAP,'PARFMT',8,NPARL,PARFMT)
          DO IPAR=1,NPARL
            WRITE(IOUT,'(23H SCRTOC: local variable,A5,8H of type,A5,
     1      11H and format,A9,1H:)') PARKEY(IPAR),PARTYP(IPAR),
     2      PARFMT(IPAR)
          ENDDO
        CALL LCMSIX(IPSAP,' ',2)
      ENDIF
      WRITE(IOUT,'(/)')
      RETURN
      END