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/TAVGEX.f | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/src/TAVGEX.f')
| -rw-r--r-- | Donjon/src/TAVGEX.f | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/Donjon/src/TAVGEX.f b/Donjon/src/TAVGEX.f new file mode 100644 index 0000000..34a4f4e --- /dev/null +++ b/Donjon/src/TAVGEX.f @@ -0,0 +1,109 @@ +*DECK TAVGEX + SUBROUTINE TAVGEX(IPMAP,IPPOW,NCH,NCOMB,NX,NY,NZ,IMPX) +* +*----------------------------------------------------------------------- +* +*Purpose: +* Compute the core-average exit burnup and channel refuelling rates. +* +*Copyright: +* Copyright (C) 2007 Ecole Polytechnique de Montreal. +* +*Author(s): +* D. Sekki +* +*Parameters: input/output +* IPMAP pointer to fuel-map information. +* IPPOW pointer to power information. +* NCH number of reactor channels. +* NCOMB number of combustion zones. +* NX number of elements along x-axis in fuel map. +* NY number of elements along y-axis in fuel map. +* NZ number of elements along z-axis in fuel map. +* IMPX printing index (=0 for no print). +* +*----------------------------------------------------------------------- +* + USE GANLIB +*---- +* SUBROUTINE ARGUMENTS +*---- + TYPE(C_PTR) IPMAP,IPPOW + INTEGER NCH,NCOMB,NX,NY,NZ,IMPX +*---- +* LOCAL VARIABLES +*---- + PARAMETER(IOUT=6) + INTEGER MIX(NX*NY*NZ),BZONE(NCH),NSCH(NCH),NAMX(NX),NAMY(NY) + REAL BVAL(NCOMB),RATE(NCH),POWC(NCH) + DOUBLE PRECISION SUMR,SUMB + CHARACTER TEXT*12,CHANX*2,CHANY*2 +*---- +* RECOVER INFORMATION +*---- + MIX(:NX*NY*NZ)=0 + CALL LCMGET(IPMAP,'BMIX',MIX) +* CHANNEL POWERS + POWC(:NCH)=0.0 + CALL LCMGET(IPPOW,'POWER-CHAN',POWC) +* REFUELLING SCHEME + NSCH(:NCH)=0 + CALL LCMGET(IPMAP,'REF-SCHEME',NSCH) +* AVERAGE EXIT BURNUPS + BVAL(:NCOMB)=0.0 + CALL LCMGET(IPMAP,'BURN-AVG',BVAL) +* COMBUSTION-ZONE INDEX + BZONE(:NCH)=0 + CALL LCMGET(IPMAP,'B-ZONE',BZONE) +* CHANNEL NAMES + NAMX(:NX)=0 + CALL LCMGET(IPMAP,'XNAME',NAMX) + NAMY(:NY)=0 + CALL LCMGET(IPMAP,'YNAME',NAMY) +*---- +* CALCULATION OVER EACH CHANNEL +*---- + IF(IMPX.GT.0)WRITE(IOUT,1000) + RATE(:NCH)=0.0 + IEL=0 + ICH=0 + SUMR=0.0D0 + SUMB=0.0D0 + DO 15 J=1,NY + DO 10 I=1,NX + IEL=IEL+1 + IF(MIX(IEL).EQ.0)GOTO 10 + ICH=ICH+1 +* REFUELLING RATE + RATE(ICH)=POWC(ICH)/BVAL(BZONE(ICH)) + SUMR=SUMR+RATE(ICH) + SUMB=SUMB+BVAL(BZONE(ICH))*RATE(ICH) + IF(IMPX.LT.4)GOTO 10 +* PRINT RATE + WRITE(TEXT,'(A9,I3.3)')'CHANNEL #',ICH + WRITE(CHANX,'(A2)') (NAMX(I)) + WRITE(CHANY,'(A2)') (NAMY(J)) + WRITE(IOUT,1001)TEXT,CHANY,CHANX,NSCH(ICH),RATE(ICH) + 10 CONTINUE + 15 CONTINUE +* EXIT BURNUP + BEXIT=REAL(SUMB/SUMR) + IF(IMPX.EQ.0)GOTO 20 + IF(BEXIT.LT.10000.)THEN + WRITE(IOUT,1002)BEXIT + ELSE + WRITE(IOUT,1003)BEXIT + ENDIF + 20 CALL LCMPUT(IPMAP,'B-EXIT',1,2,BEXIT) + CALL LCMPUT(IPMAP,'REF-RATE',NCH,2,RATE) + RETURN +* + 1000 FORMAT(/1X,'**',1X,'COMPUTING CHANNEL', + 1 1X,'REFUELLING',1X,'RATES',1X,'**'/) + 1001 FORMAT(5X,A12,5X,'NAME:',1X,A2,A2,5X,'RE', + 1 'F-SCHEME:',1X,I2,5X,'REF-RATE: ',F6.4/) + 1002 FORMAT(/1X,'CORE-AVERAGE EXIT BURNUP', + 1 1X,'=',1X,F7.2,1X,'MW*DAY/T'/) + 1003 FORMAT(/1X,'CORE-AVERAGE EXIT BURNUP', + 1 1X,'=',1X,F8.2,1X,'MW*DAY/T'/) + END |
