From 7dfcc480ba1e19bd3232349fc733caef94034292 Mon Sep 17 00:00:00 2001 From: stainer_t Date: Mon, 8 Sep 2025 13:48:49 +0200 Subject: Initial commit from Polytechnique Montreal --- Donjon/src/FLPHPR.f | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 Donjon/src/FLPHPR.f (limited to 'Donjon/src/FLPHPR.f') 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 -- cgit v1.2.3