summaryrefslogtreecommitdiff
path: root/Donjon/src/RESINI.f
diff options
context:
space:
mode:
Diffstat (limited to 'Donjon/src/RESINI.f')
-rw-r--r--Donjon/src/RESINI.f200
1 files changed, 200 insertions, 0 deletions
diff --git a/Donjon/src/RESINI.f b/Donjon/src/RESINI.f
new file mode 100644
index 0000000..9c76f3c
--- /dev/null
+++ b/Donjon/src/RESINI.f
@@ -0,0 +1,200 @@
+*DECK RESINI
+ SUBROUTINE RESINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Construct or modify a fuel-map object.
+*
+*Copyright:
+* Copyright (C) 2007 Ecole Polytechnique de Montreal.
+*
+*Author(s):
+* D. Sekki and V. Descotes
+*
+*Parameters: input
+* NENTRY number of data structures transfered to this module.
+* HENTRY name of the data structures.
+* IENTRY data structure type where:
+* IENTRY=1 for LCM memory object;
+* IENTRY=2 for XSM file;
+* IENTRY=3 for sequential binary file;
+* IENTRY=4 for sequential ASCII file.
+* JENTRY access permission for the data structure where:
+* JENTRY=0 for a data structure in creation mode;
+* JENTRY=1 for a data structure in modifications mode;
+* JENTRY=2 for a data structure in read-only mode.
+* KENTRY data structure pointer.
+*
+*Comments:
+* The RESINI: module specifications are:
+* Option 1
+* FLMAP MATEX := RESINI: MATEX [COMPO] :: (descresini1) ;
+* Option 2
+* FLMAP := RESINI: FLMAP [FLMAP2] :: (descresini2) ;
+* where
+* FLMAP : name of the \emph{resini} object that will contain the fuel-lattice
+* information. If FLMAP appears on both LHS and RHS, it will be updated;
+* otherwise, it is created.
+*
+* MATEX : name of the \emph{matex} object specified in the modification mode.
+* MATEX is required only when FLMAP is created.
+* COMPO : name of the \emph{multicompo} data structure (L\_COMPO signature)
+* where the detailed subregion geometry at assembly level is stored.
+* FLMAP2 : name of the \emph{resini} object that contains the fuel-lattice
+* information to recover from.
+* (descresini1) : structure describing the main input data to
+* the RESINI: module. Note that this input data is mandatory and
+* must be specified only when FLMAP is created.
+* (descresini2) : structure describing the input data for global and local
+* parameters. This data is permitted to be modified in the subsequent calls
+* to the RESINI: module.
+*
+*-----------------------------------------------------------------------
+*
+ USE GANLIB
+*----
+* SUBROUTINE ARGUMENTS
+*----
+ INTEGER NENTRY,IENTRY(NENTRY),JENTRY(NENTRY)
+ TYPE(C_PTR) KENTRY(NENTRY)
+ CHARACTER HENTRY(NENTRY)*12
+*----
+* LOCAL VARIABLES
+*----
+ PARAMETER(NSTATE=40,IOUT=6)
+ CHARACTER TEXT*12,HSIGN*12,HSIGN2*12
+ INTEGER ISTATE(NSTATE),IGST(NSTATE)
+ LOGICAL LNEW,LCPO,LMAP2
+ TYPE(C_PTR) IPMTX,IPMAP,JPMAP,IPCPO,IPMP2
+*----
+* PARAMETER VALIDATION
+*----
+ IF(NENTRY.GT.3)CALL XABORT('@RESINI: 2 or 3 PARAMETERS ALLOWED.')
+ LCPO=.FALSE.
+ IPCPO=C_NULL_PTR
+ IPMP2=C_NULL_PTR
+ IF(IENTRY(1).GT.2) CALL XABORT('@RESINI: INVALID FIRST PARAMETER'
+ 1 //' TYPE.')
+ LNEW=.TRUE.
+ LMAP2=.FALSE.
+ HSIGN2=' '
+ IF(NENTRY.GE.2) CALL LCMGTC(KENTRY(2),'SIGNATURE',12,HSIGN2)
+ IF((NENTRY.EQ.1).OR.(HSIGN2.EQ.'L_MAP'))THEN
+ IF(JENTRY(1).NE.1) CALL XABORT('@RESINI: OBJECT IN MODIFICATIO'
+ 1 //'N MODE EXPECTED.')
+ CALL LCMGTC(KENTRY(1),'SIGNATURE',12,HSIGN)
+ IF(HSIGN.NE.'L_MAP')THEN
+ TEXT=HENTRY(1)
+ CALL XABORT('@RESINI: SIGNATURE OF '//TEXT//' IS '//HSIGN//
+ 1 '. L_MAP EXPECTED.')
+ ENDIF
+ IF(JENTRY(1).NE.1)CALL XABORT('@RESINI: MODIFICATION MODE EX'
+ 1 //'PECTED FOR THE FUEL-MAP OBJECT.')
+ LNEW=.FALSE.
+ IF(HSIGN2.EQ.'L_MAP') THEN
+ LMAP2=.TRUE.
+ IPMP2=KENTRY(2)
+ ENDIF
+ ELSE
+ IF(HSIGN2.NE.'L_MATEX')THEN
+ TEXT=HENTRY(2)
+ CALL XABORT('@RESINI: SIGNATURE OF '//TEXT//' IS '//HSIGN2//
+ 1 '. L_MATEX EXPECTED.')
+ ENDIF
+ IF(JENTRY(2).NE.1)CALL XABORT('@RESINI: MODIFICATION MODE EX'
+ 1 //'PECTED FOR THE MATEX OBJECT.')
+ HSIGN='L_MAP'
+ CALL LCMPTC(KENTRY(1),'SIGNATURE',12,HSIGN)
+ IPMTX=KENTRY(2)
+ IF(NENTRY.EQ.3) THEN
+ LCPO=.TRUE.
+ CALL LCMGTC(KENTRY(3),'SIGNATURE',12,HSIGN)
+ IF(HSIGN.NE.'L_MULTICOMPO')THEN
+ TEXT=HENTRY(3)
+ CALL XABORT('@RESINI: SIGNATURE OF '//TEXT//' IS '//HSIGN//
+ 1 '. L_MULTICOMPO EXPECTED.')
+ ENDIF
+ IPCPO=KENTRY(3)
+ ENDIF
+ ENDIF
+ IPMAP=KENTRY(1)
+*----
+* RECOVER INFORMATION
+*----
+ IMPX=1
+ ISTATE(:NSTATE)=0
+ IF(LNEW)THEN
+ NPARM=0
+ CALL LCMGET(IPMTX,'STATE-VECTOR',ISTATE)
+ IGEO=ISTATE(6)
+ IF((IGEO.NE.7).AND.(IGEO.NE.9))CALL XABORT('@RESINI: ONLY'
+ 1 //' 3D-CARTESIAN OR 3D-HEXAGONAL GEOMETRY ALLOWED.')
+ NGRP=ISTATE(1)
+ NFUEL=ISTATE(4)
+ LX=ISTATE(8)
+ LY=ISTATE(9)
+ LZ=ISTATE(10)
+* MAIN INPUT
+ CALL RESDRV(IPMAP,IPMTX,NFUEL,LX,LY,LZ,IMPX,IGEO,NCH,NB,NTOT,
+ 1 NCOMB,NSIMS,NASB,NAX,NAY,NIS,IPCPO)
+ ISTATE(:NSTATE)=0
+ ISTATE(1)=NB
+ ISTATE(2)=NCH
+ ISTATE(3)=NCOMB
+ ISTATE(4)=NGRP
+ ISTATE(12)=IGEO
+ ISTATE(7)=NFUEL
+ ISTATE(8)=NPARM
+ ISTATE(9)=NTOT
+ ISTATE(13)=NSIMS
+ ISTATE(14)=NASB
+ ISTATE(15)=NAX
+ ISTATE(16)=NAY
+ ISTATE(18)=NIS
+ ELSE
+ CALL LCMGET(IPMAP,'STATE-VECTOR',ISTATE)
+ NB=ISTATE(1)
+ NCH=ISTATE(2)
+ NCOMB=ISTATE(3)
+ IGEO=ISTATE(12)
+ NFUEL=ISTATE(7)
+ NPARM=ISTATE(8)
+ NTOT=ISTATE(9)
+ NSIMS=ISTATE(13)
+ NASB=ISTATE(14)
+ NAX=ISTATE(15)
+ NAY=ISTATE(16)
+ NIS=ISTATE(18)
+ ENDIF
+ IGST(:NSTATE)=0
+ JPMAP=LCMGID(IPMAP,'GEOMAP')
+ CALL LCMGET(JPMAP,'STATE-VECTOR',IGST)
+ NX=IGST(3)
+ NY=IGST(4)
+ NZ=IGST(5)
+ IF(IGEO.EQ.9) NY=1
+* INPUT OF PARAMETERS
+ CALL RESPAR(IPMAP,NCH,NB,NFUEL,NCOMB,NPARM,NX,NY,NZ,NSTATE,
+ 1 ISTATE,IMPX,NASB,LMAP2,IPMP2)
+ CALL LCMPUT(IPMAP,'STATE-VECTOR',NSTATE,1,ISTATE)
+ IF(IMPX.GT.0)WRITE(IOUT,100) IMPX,(ISTATE(I),I=1,9),ISTATE(12),
+ 1 ISTATE(13),ISTATE(18)
+ IF(IMPX.GT.5)CALL LCMLIB(IPMAP)
+ RETURN
+*
+ 100 FORMAT(/8H OPTIONS/8H -------/
+ 1 7H IMPX ,I6,30H (0=NO PRINT/1=SHORT/2=MORE)/
+ 2 7H NB ,I6,39H (NUMBER OF FUEL BUNDLES PER CHANNEL)/
+ 3 7H NCH ,I6,28H (NUMBER OF FUEL CHANNELS)/
+ 4 7H NCOMB ,I6,31H (NUMBER OF COMBUSTION ZONES)/
+ 5 7H NGRP ,I6,28H (NUMBER OF ENERGY GROUPS)/
+ 6 7H INTER ,I6,26H (TYPE OF INTERPOLATION)/
+ 7 7H ISHIFT,I6,28H (NUMBER OF BUNDLE SHIFTS)/
+ 8 7H NFUEL ,I6,25H (NUMBER OF FUEL TYPES)/
+ 9 7H NPARM ,I6,25H (NUMBER OF PARAMETERS)/
+ 1 7H NTOT ,I6,33H (TOTAL NUMBER OF FUEL BUNDLES)/
+ 2 7H IGEO ,I6,28H (7=CARTESIAN/9=HEXAGONAL)/
+ 3 7H NSIMS ,I6,35H (ASSEMBLY LAYOUT IN SIM: MODULE)/
+ 4 7H NIS ,I6,38H (NUMBER OF PARTICULARIZED ISOTOPES))
+ END