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/USPMIX.f | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/src/USPMIX.f')
| -rw-r--r-- | Donjon/src/USPMIX.f | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/Donjon/src/USPMIX.f b/Donjon/src/USPMIX.f new file mode 100644 index 0000000..338a14c --- /dev/null +++ b/Donjon/src/USPMIX.f @@ -0,0 +1,94 @@ +*DECK USPMIX + SUBROUTINE USPMIX(IPMTX,NEL,NREFL,NFUEL,MAT,RMIX,FMIX,INDX,NMIX) +* +*----------------------------------------------------------------------- +* +*Purpose: +* Recover and check the material mixtures. +* +*Copyright: +* Copyright (C) 2007 Ecole Polytechnique de Montreal. +* +*Author(s): +* D. Sekki +* +*Parameters: input +* IPMTX pointer to matex information. +* NEL total number of volumes in reactor geometry. +* NREFL total number of reflector types. +* NFUEL total number of fuel types. +* MAT material index from geometry. +* RMIX reflector-type mixtures indices. +* FMIX fuel-type mixtures indices. +* +*Parameters: output +* INDX renumbered material index. +* NMIX total number of non-virtual volumes. +* +*----------------------------------------------------------------------- +* + USE GANLIB +*---- +* SUBROUTINE ARGUMENTS +*---- + TYPE(C_PTR) IPMTX + INTEGER NEL,NREFL,NFUEL,MAT(NEL),RMIX(NREFL),FMIX(NFUEL), + 1 INDX(NEL),NMIX +*---- +* LOCAL VARIABLES +*---- + INTEGER, ALLOCATABLE, DIMENSION(:) :: RTOT,FTOT +*---- +* SCRATCH STORAGE ALLOCATION +*---- + ALLOCATE(RTOT(NREFL),FTOT(NFUEL)) +*---- +* MATERIAL INDEX +*---- + RTOT(:NREFL)=0 + FTOT(:NFUEL)=0 + INDX(:NEL)=0 + NMIX=0 + DO IEL=1,NEL + IF(MAT(IEL).NE.0)THEN + NMIX=NMIX+1 + INDX(IEL)=NMIX + ENDIF + ENDDO + IF((NFUEL.EQ.0).AND.(NREFL.EQ.0)) GOTO 20 +* CHECK MIXTURES + DO 10 IEL=1,NEL + IMIX=MAT(IEL) + IF(IMIX.EQ.0)GOTO 10 + IF(NREFL.EQ.0)GOTO 5 + DO IREFL=1,NREFL + IF(IMIX.EQ.RMIX(IREFL))THEN + RTOT(IREFL)=RTOT(IREFL)+1 + GOTO 10 + ENDIF + ENDDO + 5 IF(NFUEL.EQ.0)GOTO 10 + DO IFUEL=1,NFUEL + IF(IMIX.EQ.FMIX(IFUEL))THEN + FTOT(IFUEL)=FTOT(IFUEL)+1 + GOTO 10 + ENDIF + ENDDO + 10 CONTINUE +* STORAGE +20 CALL LCMPUT(IPMTX,'MAT',NEL,1,MAT) + CALL LCMPUT(IPMTX,'INDEX',NEL,1,INDX) + IF(NREFL.NE.0) THEN + CALL LCMPUT(IPMTX,'RMIX',NREFL,1,RMIX) + CALL LCMPUT(IPMTX,'RTOT',NREFL,1,RTOT) + ENDIF + IF(NFUEL.NE.0) THEN + CALL LCMPUT(IPMTX,'FMIX',NFUEL,1,FMIX) + CALL LCMPUT(IPMTX,'FTOT',NFUEL,1,FTOT) + ENDIF +*---- +* SCRATCH STORAGE DEALLOCATION +*---- + DEALLOCATE(FTOT,RTOT) + RETURN + END |
