summaryrefslogtreecommitdiff
path: root/Dragon/src/BREMAC.f
diff options
context:
space:
mode:
Diffstat (limited to 'Dragon/src/BREMAC.f')
-rw-r--r--Dragon/src/BREMAC.f50
1 files changed, 34 insertions, 16 deletions
diff --git a/Dragon/src/BREMAC.f b/Dragon/src/BREMAC.f
index eaba3e9..d742354 100644
--- a/Dragon/src/BREMAC.f
+++ b/Dragon/src/BREMAC.f
@@ -1,7 +1,7 @@
*DECK BREMAC
SUBROUTINE BREMAC(NC,IPMAC2,NG,NL,LX1,NMIX1,NMIX2,IMIX,IMIX1,
- 1 IGAP,ILEAKS,IDF,IPRINT,ZKEFF,B2,VOL1,FLX1,DC1,TOT1,CHI1,SIGF1,
- 2 SCAT1,JXM,JXP,FHETXM,FHETXP,ADF1)
+ 1 IGAP,ILEAKS,IDF,IPRINT,IH,ZKEFF,B2,VOL1,FLX1,DC1,TOT1,CHI1,
+ 2 SIGF1,SCAT1,HFACT1,JXM,JXP,FHETXM,FHETXP,ADF1)
*
*-----------------------------------------------------------------------
*
@@ -36,6 +36,7 @@
* IPRINT print parameter
*
*Parameters: output
+* IH H-FACTOR flag (=0: not used; =1: recovered).
* ZKEFF effective multiplication factor.
* B2 buckling.
* VOL1 volumes.
@@ -45,6 +46,7 @@
* CHI1 fission spectra.
* SIGF1 nu*fission cross sections.
* SCAT1 scattering cross sections.
+* HFACT1 H-FACTOR values.
* JXM left boundary currents.
* JXP right boundary currents.
* FHETXM left boundary fluxes.
@@ -60,12 +62,12 @@
INTEGER NC
TYPE(C_PTR) IPMAC2(NC)
INTEGER NG,NL,LX1,NMIX1,NMIX2,IMIX(LX1),IMIX1(LX1),IGAP(LX1),
- 1 ILEAKS,IDF,IPRINT
+ 1 ILEAKS,IDF,IPRINT,IH
REAL ZKEFF(NC),B2(NC),VOL1(NMIX1,NC),FLX1(NMIX1,NG,NC),
1 DC1(NMIX1,NG,NC),TOT1(NMIX1,NG,NL,NC),CHI1(NMIX1,NG,NC),
- 2 SIGF1(NMIX1,NG,NC),SCAT1(NMIX1,NG,NG,NL,NC),JXM(NMIX1,NG,NC),
- 3 JXP(NMIX1,NG,NC),FHETXM(NMIX1,NG,NL,NC),FHETXP(NMIX1,NG,NL,NC),
- 4 ADF1(NMIX1,NG,NC)
+ 2 SIGF1(NMIX1,NG,NC),SCAT1(NMIX1,NG,NG,NL,NC),HFACT1(NMIX1,NG,NC),
+ 3 JXM(NMIX1,NG,NC),JXP(NMIX1,NG,NC),FHETXM(NMIX1,NG,NL,NC),
+ 4 FHETXP(NMIX1,NG,NL,NC),ADF1(NMIX1,NG,NC)
*----
* LOCAL VARIABLES
*----
@@ -77,7 +79,7 @@
*----
INTEGER, ALLOCATABLE, DIMENSION(:) :: IJJ,NJJ,IPOS,IMIX2
REAL, ALLOCATABLE, DIMENSION(:) :: VOL,WORK,SFIS,SFIS1
- REAL, ALLOCATABLE, DIMENSION(:,:) :: DC,CHI,SIGF
+ REAL, ALLOCATABLE, DIMENSION(:,:) :: DC,CHI,SIGF,HFACT
REAL, ALLOCATABLE, DIMENSION(:,:,:) :: FLX,TOT
REAL, ALLOCATABLE, DIMENSION(:,:,:,:) :: SCAT
DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:,:) :: DCOU
@@ -86,7 +88,8 @@
*----
ALLOCATE(VOL(NMIX2),FLX(NMIX2,NG,NL),TOT(NMIX2,NG,NL),
1 DC(NMIX2,NG),CHI(NMIX2,NG),SIGF(NMIX2,NG),SCAT(NMIX2,NG,NG,NL),
- 2 IMIX2(NMIX2),SFIS(NMIX2),SFIS1(NMIX1),DCOU(NMIX2+1,NG))
+ 2 HFACT(NMIX2,NG),IMIX2(NMIX2),SFIS(NMIX2),SFIS1(NMIX1),
+ 3 DCOU(NMIX2+1,NG))
ALLOCATE(IJJ(NMIX2),NJJ(NMIX2),IPOS(NMIX2),WORK(NG*NMIX2))
*----
* SET IMIX2
@@ -111,11 +114,12 @@
CALL LCMGET(IPMAC2(IC),'K-EFFECTIVE',ZKEFF(IC))
B2(IC)=0.0
IF(ILEAKS.GT.0) THEN
- CALL LCMLEN(IPMAC2(IC),'B2 B1HOM',ILONG,ITYLCM)
- IF(ILONG.EQ.1) CALL LCMGET(IPMAC2(IC),'B2 B1HOM',B2(IC))
+ CALL LCMLEN(IPMAC2(IC),'B2 B1HOM',ILCMLN,ITYLCM)
+ IF(ILCMLN.EQ.1) CALL LCMGET(IPMAC2(IC),'B2 B1HOM',B2(IC))
ENDIF
JPMAC2=LCMGID(IPMAC2(IC),'GROUP')
SCAT(:,:,:,:)=0.0
+ IH=0
DO IGR=1,NG
KPMAC2=LCMGIL(JPMAC2,IGR)
CALL LCMGET(KPMAC2,'FLUX-INTG',FLX(1,IGR,1))
@@ -155,8 +159,8 @@
CALL LCMGET(KPMAC2,'NUSIGF',SIGF(1,IGR))
DO IL=1,NL
WRITE(CM,'(I2.2)') IL-1
- CALL LCMLEN(KPMAC2,'IJJS'//CM,ILONG,ITYLCM)
- IF(ILONG.EQ.0) CYCLE
+ CALL LCMLEN(KPMAC2,'IJJS'//CM,ILCMLN,ITYLCM)
+ IF(ILCMLN.EQ.0) CYCLE
CALL LCMGET(KPMAC2,'IJJS'//CM,IJJ)
CALL LCMGET(KPMAC2,'NJJS'//CM,NJJ)
CALL LCMGET(KPMAC2,'IPOS'//CM,IPOS)
@@ -169,6 +173,11 @@
ENDDO
ENDDO
ENDDO
+ CALL LCMLEN(KPMAC2,'H-FACTOR',ILCMLN,ITYLCM)
+ IF(ILCMLN.GT.0) THEN
+ IH=1
+ CALL LCMGET(KPMAC2,'H-FACTOR',HFACT(1,IGR))
+ ENDIF
DO IBM=1,NMIX2
FLX(IBM,IGR,:NL)=FLX(IBM,IGR,:NL)/VOL(IBM)
ENDDO
@@ -220,6 +229,7 @@
SIGF1(:,:,IC)=0.0
CHI1(:,:,IC)=0.0
SCAT1(:,:,:,:,IC)=0.0
+ HFACT1(:,:,IC)=0.0
DO IL=1,NL,2
FHETXM(:,:,IL,IC)=1.0
FHETXP(:,:,IL,IC)=1.0
@@ -278,6 +288,10 @@
1 VOL(IBM2)*FLX(IBM2,JGR,1)*SCAT(IBM2,IGR,JGR,IL)
ENDDO
ENDDO
+ IF(IH.EQ.1) THEN
+ HFACT1(IBM,IGR,IC)=HFACT1(IBM,IGR,IC)+VOL(IBM2)*
+ 1 FLX(IBM2,IGR,1)*HFACT(IBM2,IGR)
+ ENDIF
ENDDO
ENDDO
DO IBM=1,NMIX1
@@ -295,6 +309,9 @@
1 FLX1(IBM,JGR,IC)
ENDDO
ENDDO
+ IF(IH.EQ.1) THEN
+ HFACT1(IBM,IGR,IC)=HFACT1(IBM,IGR,IC)/FLX1(IBM,IGR,IC)
+ ENDIF
ENDDO
DO IGR=1,NG
FLX1(IBM,IGR,IC)=FLX1(IBM,IGR,IC)/VOL1(IBM,IC)
@@ -309,8 +326,8 @@
CALL LCMLEN(IPMAC2(IC),'HADF',NTYPE,ITYLCM)
IF(NTYPE/2.NE.1) CALL XABORT('BREMAC: NTYPE=1 EXPECTED.')
CALL LCMGTC(IPMAC2(IC),'HADF',8,HADF)
- CALL LCMLEN(IPMAC2(IC),HADF,ILONG,ITYLCM)
- IF(ILONG.NE.NMIX1*NG) CALL XABORT('BREMAC: ADF OVERFLOW.')
+ CALL LCMLEN(IPMAC2(IC),HADF,ILCMLN,ITYLCM)
+ IF(ILCMLN.NE.NMIX1*NG) CALL XABORT('BREMAC: ADF OVERFLOW.')
CALL LCMGET(IPMAC2(IC),HADF,ADF1(1,1,IC))
ENDIF
*----
@@ -332,6 +349,7 @@
WRITE(6,20) 'DC1',DC1(:,IGR,IC)
WRITE(6,20) 'CHI1',CHI1(:,IGR,IC)
WRITE(6,20) 'SIGF1',SIGF1(:,IGR,IC)
+ IF(IH.EQ.1) WRITE(6,20) 'H-FACTOR',HFACT1(:,IGR,IC)
DO JGR=1,NG
IF(IGR.EQ.JGR) THEN
WRITE(6,20) 'INSCAT1-P0',SCAT1(:,IGR,IGR,1,IC)
@@ -360,8 +378,8 @@
*----
* SCRATCH STORAGE DEALLOCATION
*----
- DEALLOCATE(WORK,IPOS,NJJ,IJJ,DCOU,SFIS1,SFIS,IMIX2,SCAT,SIGF,CHI,
- 1 DC,TOT,FLX,VOL)
+ DEALLOCATE(WORK,IPOS,NJJ,IJJ,DCOU,SFIS1,SFIS,IMIX2,HFACT,SCAT,
+ 1 SIGF,CHI,DC,TOT,FLX,VOL)
RETURN
*
10 FORMAT(1X,A12,10I13/(12X,10I13))