diff options
Diffstat (limited to 'Donjon/src/SIMOUT.f')
| -rw-r--r-- | Donjon/src/SIMOUT.f | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/Donjon/src/SIMOUT.f b/Donjon/src/SIMOUT.f new file mode 100644 index 0000000..abff32b --- /dev/null +++ b/Donjon/src/SIMOUT.f @@ -0,0 +1,155 @@ +*DECK SIMOUT + SUBROUTINE SIMOUT(IPMAP,IMPX,BURNINS,IZONE,NCH,NB,LX,LY,HHX,IHY, + > STATE) +* +*----------------------------------------------------------------------- +* +*Purpose: +* Print burnup distribution (3D), radial averages or axial averages +* +*Copyright: +* Copyright (C) 2013 Ecole Polytechnique de Montreal +* +*Author(s): +* V. Salino +* +*Parameters: input +* IPMAP fuel map object. +* IMPX print parameter. +* BURNINS instantaneous burnups. +* IZONE default assembly or quart-of-assembly names as defined in +* the fuel map. +* NCH number of assemblies or number of quart-of-assemblies. +* NB number of axial burnup subdivisions in an assembly. +* LX number of assemblies along the X axis. +* LY number of assemblies along the Y axis. +* LXMIN coordinates on X axis of the first assembly. +* LYMIN coordinates on Y axis of the first assembly. +* HHX naval battle indices along X axis. +* IHY naval battle indices along Y axis. +* STATE flag indicating whether it is a beginning-of-stage print +* or a end-of-stage print. +* +*----------------------------------------------------------------------- +* + USE GANLIB +*---- +* SUBROUTINE ARGUMENTS +*---- + TYPE(C_PTR) IPMAP + INTEGER IMPX,IHY(LY),NCH,NB,LX,LY + CHARACTER HHX(LX)*1,IZONE(NCH)*4,STATE*5 + REAL BURNINS(NCH,NB) +*---- +* LOCAL VARIABLES +*---- + INTEGER INTG2,INTG2B + REAL MEANR + CHARACTER TEXT4*4,TEXT1*1,TEXT1B*1 +*---- +* ALLOCATABLE ARRAYS +*---- + REAL, ALLOCATABLE, DIMENSION(:) :: MEAN +* + IF(STATE.EQ.'BEGIN')THEN + CALL LCMGET(IPMAP,'BURN-INST',BURNINS) + ENDIF +*---- +* RADIALLY-AVERAGED BURNUP MAP +*---- + IF((STATE.EQ.'BEGIN'.AND.IMPX.GE.8).OR. + > (STATE.EQ.'END '.AND.IMPX.GE.3)) THEN + IF(STATE.EQ.'BEGIN')THEN + WRITE(6,100) + ELSE + WRITE(6,105) + ENDIF + WRITE(6,110) (HHX(I),I=1,LX) + ICH=1 + DO I=1,LY + TEXT4=IZONE(ICH) + READ(TEXT4,'(A1,I2)') TEXT1,INTG2 + NFULL=0 + DO J=1,LX+1 + NFULL=J + IF(ICH.EQ.(NCH+1))GO TO 10 + TEXT4=IZONE(ICH) + READ(TEXT4,'(A1,I2)') TEXT1B,INTG2B + IF(INTG2.NE.INTG2B)GO TO 10 + ICH=ICH+1 + ENDDO + CALL XABORT('@SIMOUT: INCOHERENCE IN BASIC ASSEMBLY ' + > //'LAYOUT GIVEN IN RESINI:.') + 10 CONTINUE + NFULL=NFULL-1 + NEMPTY=(LX-NFULL)/2 + ALLOCATE(MEAN(NFULL)) + MEAN(:NFULL)=0.0 + DO K=1,NFULL + DO IB=1,NB + MEAN(K)=MEAN(K)+BURNINS(ICH-1-NFULL+K,IB)/NB + ENDDO + ENDDO + WRITE(6,115,ADVANCE='NO') IHY(I) + DO K=1,NEMPTY + WRITE(6,120,ADVANCE='NO') + ENDDO + WRITE(6,125) (NINT(MEAN(K)),K=1,NFULL) + DEALLOCATE(MEAN) + ENDDO + ENDIF +*---- +* AXIALLY-AVERAGED BURNUP MAP +*---- + IF((STATE.EQ.'BEGIN'.AND.IMPX.GE.9).OR. + > (STATE.EQ.'END '.AND.IMPX.GE.4))THEN + IF(STATE.EQ.'BEGIN')THEN + WRITE(6,130) + ELSE + WRITE(6,135) + ENDIF + DO IB=1,NB + MEANR=0.0 + DO ICH=1,NCH + MEANR=MEANR+BURNINS(ICH,IB)/NCH + ENDDO + WRITE(6,140) NINT(MEANR) + ENDDO + ENDIF +*---- +* PER-ASSEMBLY 3D BURNUP MAP +*---- + IF((STATE.EQ.'BEGIN'.AND.IMPX.GE.10).OR. + > (STATE.EQ.'END '.AND.IMPX.GE.5))THEN + IF(STATE.EQ.'BEGIN')THEN + WRITE(6,150) + ELSE + WRITE(6,155) + ENDIF + DO ICH=1,NCH + WRITE(6,160) IZONE(ICH) + WRITE(6,170) (BURNINS(ICH,IB),IB=1,NB) + ENDDO + ENDIF +* + IF(STATE.EQ.'BEGIN') BURNINS(:NCH,:NB)=0.0 + RETURN +* + 100 FORMAT(' SIM: BEGINNING-OF-STAGE BURNUP MAP (MW*D/TONNE), ', + > 'RADIAL VIEW :') + 105 FORMAT(' SIM: END-OF-STAGE BURNUP MAP (MW*D/TONNE), ', + > 'RADIAL VIEW :') + 110 FORMAT(1X,20(5X,1A1)) + 115 FORMAT(1X,I2) + 120 FORMAT(6X) + 125 FORMAT(21I6) + 130 FORMAT(/,' SIM: BEGINNING-OF-STAGE BURNUP MAP (MW*D/TONNE), ', + > 'AXIAL VIEW :') + 135 FORMAT(/,' SIM: END-OF-STAGE BURNUP MAP (MW*D/TONNE), ', + > 'AXIAL VIEW :') + 140 FORMAT(1X,I5.1) + 150 FORMAT(/,' SIM: BEGINNING-OF-STAGE 3D BURNUP MAP (MW*D/TONNE) :') + 155 FORMAT(/,' SIM: END-OF-STAGE 3D BURNUP MAP (MW*D/TONNE) :') + 160 FORMAT(' Assembly ',A) + 170 FORMAT(3X,16(1X,F7.1)) + END |
