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/FLPHPR.f | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/src/FLPHPR.f')
| -rw-r--r-- | Donjon/src/FLPHPR.f | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/Donjon/src/FLPHPR.f b/Donjon/src/FLPHPR.f new file mode 100644 index 0000000..fd46631 --- /dev/null +++ b/Donjon/src/FLPHPR.f @@ -0,0 +1,188 @@ +*DECK FLPHPR
+ SUBROUTINE FLPHPR(IPMAP,NCH,NB,NX,NZ,POWB,PBNM,ICHM,IBNM,POWC,
+ 1 PCHM,BAVG,BFACT,CAVG,CFACT,IMPX)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Print the bundle and channel powers over the fuel lattice. Adapted
+* from FLPRNT.
+*
+*Copyright:
+* Copyright (C) 2010 Ecole Polytechnique de Montreal.
+*
+*Author(s):
+* V. Descotes
+*
+*Parameters: input/output
+* IPMAP pointer to fuel-map information.
+* NCH number of reactor channels.
+* NB number of fuel bundles per channel.
+* NX number of elements along x-axis.
+* NZ number of elements along z-axis.
+* POWB bundle powers in kW.
+* PBNM maximum bundle power.
+* ICHM maximum-power channel number.
+* IBNM maximum-power bundle number.
+* POWC channel powers in kW.
+* PCHM maximum channel power.
+* BAVG average bundle power.
+* BFACT bundle power-form factor.
+* CAVG average channel power.
+* CFACT channel power-form factor.
+* IMPX printing index: 0 = no print
+* 1 = minimal printing
+* 2 = channel power only
+* 3 = bundle power by plane only
+* 10 = bundle power by channel
+* any added values of 2, 3 and 10: 5,12,13,15
+*
+*-----------------------------------------------------------------------
+*
+ USE GANLIB
+*----
+* SUBROUTINE ARGUMENTS
+*----
+ TYPE(C_PTR) IPMAP
+ INTEGER NCH,NB,NX,NZ,ICHM,IBNM,IMPX
+ REAL POWB(NCH,NB),POWC(NCH),PBNM,PCHM
+ DOUBLE PRECISION BAVG,CAVG,BFACT
+*----
+* LOCAL VARIABLES
+*----
+ PARAMETER(IOUT=6)
+ REAL RADB(NX,NB),RADC(NX)
+ INTEGER MIX(NX,NZ)
+ CHARACTER TEXT*12
+*
+ MIX(:NX,:NZ)=0
+ CALL LCMGET(IPMAP,'BMIX',MIX)
+*----
+* BUNDLE POWERS OVER EACH CHANNEL
+*----
+ WRITE(IOUT,1009)
+ IEL=0
+ ICH=0
+ DO 10 I=1,NX
+ IEL=IEL+1
+ DO 5 K=1,NZ
+ IF(MIX(IEL,K).NE.0)GOTO 6
+ 5 CONTINUE
+ GO TO 10
+ 6 ICH=ICH+1
+ IF(IMPX.GE.10) THEN
+ WRITE(TEXT,'(A9,I3.3)')'CHANNEL #',ICH
+ WRITE(IOUT,1000)TEXT,POWC(ICH)
+ IF(PBNM.LT.1.)THEN
+ WRITE(IOUT,'(1X,1P,12E11.4)')(POWB(ICH,IB),IB=1,NB)
+ ELSE IF(PBNM.LT.1000.)THEN
+ WRITE(IOUT,'(1X,12F11.3)')(POWB(ICH,IB),IB=1,NB)
+ ELSE
+ WRITE(IOUT,'(1X,12F11.1)')(POWB(ICH,IB),IB=1,NB)
+ ENDIF
+ ENDIF
+ 10 CONTINUE
+*
+ IF((IMPX.LT.3).OR.((IMPX.GE.10).AND.(IMPX.LT.13)))GOTO 50
+*----
+* BUNDLE POWERS PER RADIAL PLANE
+*----
+ RADB(:NX,:NB)=0.0
+ WRITE(IOUT,1010)
+ DO IB=1,NB
+ IEL=0
+ ICH=0
+ DO 20 I=1,NX
+ IEL=IEL+1
+ DO 15 K=1,NZ
+ IF(MIX(IEL,K).NE.0)GOTO 16
+ 15 CONTINUE
+ GO TO 20
+ 16 ICH=ICH+1
+ RADB(I,IB)=POWB(ICH,IB)
+ 20 CONTINUE
+ ENDDO
+ DO IB=1,NB
+ WRITE(IOUT,1011)IB
+ ENDDO
+ 50 IF((IMPX.EQ.0).OR.(IMPX.EQ.1).OR.(IMPX.EQ.3).OR.(IMPX.EQ.4)
+ 1 .OR.(IMPX.EQ.10).OR.(IMPX.EQ.11).OR.(IMPX.EQ.13).OR.(IMPX.EQ.14))
+ 2 GOTO 90
+*----
+* CHANNEL POWERS IN RADIAL PLANE
+*----
+ RADC(:NX)=0.0
+ WRITE(IOUT,1013)
+ IEL=0
+ ICH=0
+ DO 60 I=1,NX
+ IEL=IEL+1
+ DO 55 K=1,NZ
+ IF(MIX(IEL,K).NE.0)GOTO 56
+ 55 CONTINUE
+ GO TO 60
+ 56 ICH=ICH+1
+ RADC(I)=POWC(ICH)
+ 60 CONTINUE
+ WRITE(IOUT,*)' '
+*----
+* FINAL INFORMATION
+*----
+ 90 WRITE(IOUT,1002)
+ IF(PBNM.LT.1000.)THEN
+ WRITE(IOUT,1003)PBNM,IBNM
+ ELSE
+ WRITE(IOUT,1016)PBNM,ICHM,IBNM
+ ENDIF
+ IF(BAVG.LT.1000.)THEN
+ WRITE(IOUT,1005)BAVG
+ ELSE
+ WRITE(IOUT,1017)BAVG
+ ENDIF
+ FACT=1./REAL(BFACT)
+ WRITE(IOUT,1006)BFACT,FACT
+ IF(PCHM.LT.10000.)THEN
+ WRITE(IOUT,1004)PCHM,ICHM
+ ELSE
+ WRITE(IOUT,1018)PCHM,ICHM
+ ENDIF
+ IF(CAVG.LT.10000.)THEN
+ WRITE(IOUT,1007)CAVG
+ ELSE
+ WRITE(IOUT,1019)CAVG
+ ENDIF
+ FACT=1./CFACT
+ WRITE(IOUT,1008)CFACT,FACT
+ RETURN
+*
+ 1000 FORMAT(/5X,A12,5X,'CHANNEL POWER =',1X,1P,E11.4,'kW')
+ 1002 FORMAT(/5X,5('--o--',6X)/)
+ 1003 FORMAT(/1X,'MAXIMUM BUNDLE POWER =',1X,F9.1,1X,'kW',
+ 1 3X,'=>',3X,'BUNDLE #',I2.2)
+ 1004 FORMAT(/1X,'MAXIMUM CHANNEL POWER =',1X,F9.1,1X,'kW',
+ 1 3X,'=>',3X,'CHANNEL #',I2,3X)
+ 1005 FORMAT(1X,'AVERAGE POWER OVER ALL BUNDLES',
+ 1 1X,'=',1X,F9.1,1X,'kW')
+ 1006 FORMAT(1X,'BUNDLE-POWER FORM FACTOR',2X,'=>',2X,
+ 1 'AVG/MAX =',1X,F8.4,3X,'(MAX/AVG = ',F8.4,')')
+ 1007 FORMAT(1X,'AVERAGE POWER OVER ALL CHANNELS',
+ 1 1X,'=',1X,F9.1,1X,'kW')
+ 1008 FORMAT(1X,'CHANNEL-POWER FORM FACTOR',2X,'=>',2X,
+ 1 'AVG/MAX =',1X,F8.4,2X,'(MAX/AVG = ',F8.4,')'/)
+ 1009 FORMAT(/20X,'** BUNDLE POWERS OVER EACH',
+ 1 1X,'CHANNEL (kW) **'/)
+ 1010 FORMAT(//20X,'** BUNDLE POWERS PER RADIAL',
+ 1 1X,'PLANE **'/)
+ 1011 FORMAT(//1X,'BUNDLE POWERS',1X,'(kW)',1X,
+ 1 '=>',1X,'RADIAL PLANE',1X,'#',I2.2/)
+ 1013 FORMAT(//20X,'** CHANNEL POWERS IN RADIAL',
+ 1 1X,'PLANE (kW) **'/)
+ 1016 FORMAT(/1X,'MAXIMUM BUNDLE POWER =',1X,F9.1,1X,'kW',
+ 1 3X,'=>',3X,'CHANNEL #',1X,I2,3X,'BUNDLE #',I2.2)
+ 1017 FORMAT(1X,'AVERAGE POWER OVER ALL BUNDLES',
+ 1 1X,'=',1X,F9.1,1X,'kW')
+ 1018 FORMAT(/1X,'MAXIMUM CHANNEL POWER =',1X,F9.1,1X,'kW',
+ 1 3X,'=>',3X,'CHANNEL #',1X,I2)
+ 1019 FORMAT(1X,'AVERAGE POWER OVER ALL CHANNELS',
+ 1 1X,'=',1X,F9.1,1X,'kW')
+ END
|
