diff options
| author | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
|---|---|---|
| committer | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
| commit | 7dfcc480ba1e19bd3232349fc733caef94034292 (patch) | |
| tree | 03ee104eb8846d5cc1a981d267687a729185d3f3 /Donjon/src/SCRTOC.f | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/src/SCRTOC.f')
| -rw-r--r-- | Donjon/src/SCRTOC.f | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/Donjon/src/SCRTOC.f b/Donjon/src/SCRTOC.f new file mode 100644 index 0000000..f1cca53 --- /dev/null +++ b/Donjon/src/SCRTOC.f @@ -0,0 +1,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 |
