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/NEWMDV.f | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/src/NEWMDV.f')
| -rw-r--r-- | Donjon/src/NEWMDV.f | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/Donjon/src/NEWMDV.f b/Donjon/src/NEWMDV.f new file mode 100644 index 0000000..0dfd906 --- /dev/null +++ b/Donjon/src/NEWMDV.f @@ -0,0 +1,172 @@ +*DECK NEWMDV + SUBROUTINE NEWMDV(IPMTX,IPMAC,IPMAC2,IPDEV,NMIX,NGRP,NL,NDEL,LEAK, + 1 NEL,LX,LY,LZ,XFAC,IMPX) +* +*----------------------------------------------------------------------- +* +*Purpose: +* Update the material properties and store them in a new macrolib. +* +*Copyright: +* Copyright (C) 2007 Ecole Polytechnique de Montreal. +* +*Author(s): +* D. Sekki +* +*Parameters: input +* IPMTX pointer to matex information. +* IPMAC pointer to create mode macrolib. +* IPMAC2 pointer to read-only mode macrolib. +* IPDEV pointer to device information. +* NMIX maximum number of material mixtures. +* NGRP number of energy groups. +* NL number of legendre orders (=1 for isotropic scattering). +* NDEL number of precursor groups for delayed neutron. +* LEAK diffusion coefficient flag (=1: isotropic; =2: anisotropic). +* NEL total number of elements. +* LX number of elements along x-axis. +* LY number of elements along y-axis. +* LZ number of elements along z-axis. +* XFAC corrective factor for delta sigmas. +* IMPX printing index (=0 for no print). +* +*----------------------------------------------------------------------- +* + USE GANLIB +*---- +* SUBROUTINE ARGUMENTS +*---- + TYPE(C_PTR) IPMTX,IPMAC,IPMAC2,IPDEV + INTEGER NMIX,NGRP,NL,NDEL,LEAK,NEL,LX,LY,LZ + REAL XFAC +*---- +* LOCAL VARIABLES +*---- + PARAMETER(NSTATE=40,IOUT=6,EPSI=1.0E-4,MAXPRT=10) + INTEGER INDX(NEL),ISTATE(NSTATE),DMIX(2,MAXPRT),INAME(3) + REAL MESHX(LX+1),MESHY(LY+1),MESHZ(LZ+1),DPOS(6,MAXPRT),LEVEL + CHARACTER RNAME*12 + TYPE(C_PTR) JPDEV,KPDEV +*---- +* ALLOCATABLE ARRAYS +*---- + INTEGER, ALLOCATABLE, DIMENSION(:) :: IJJ,NJJ + REAL, ALLOCATABLE, DIMENSION(:) :: TOT0,TOT1,ZNUS,CHI,SIGF,DIFX, + 1 DIFY,DIFZ,HFAC,SCAT +*---- +* SCRATCH STORAGE ALLOCATION +*---- + ALLOCATE(IJJ(NMIX*NGRP*NL),NJJ(NMIX*NGRP*NL),TOT0(NMIX*NGRP), + 1 TOT1(NMIX*NGRP),ZNUS(NMIX*NGRP*(NDEL+1)),CHI(NMIX*NGRP*(NDEL+1)), + 2 SIGF(NMIX*NGRP),DIFX(NMIX*NGRP),DIFY(NMIX*NGRP),DIFZ(NMIX*NGRP), + 3 HFAC(NMIX*NGRP),SCAT(NMIX*NL*NGRP*NGRP)) +*---- +* RECOVER EXISTING PROPERTIES +*---- + CALL NEWMGT(IPMAC2,NMIX,NGRP,NL,NDEL,LEAK,TOT0,TOT1,ZNUS,CHI,SIGF, + 1 DIFX,DIFY,DIFZ,HFAC,IJJ,NJJ,SCAT) +*---- +* RECOVER MATEX INFORMATION +*---- + MESHX(:LX+1)=0.0 + MESHY(:LY+1)=0.0 + MESHZ(:LZ+1)=0.0 + CALL LCMGET(IPMTX,'MESHX',MESHX) + CALL LCMGET(IPMTX,'MESHY',MESHY) + CALL LCMGET(IPMTX,'MESHZ',MESHZ) + INDX(:NEL)=0 + CALL LCMGET(IPMTX,'INDEX',INDX) + CALL LCMGET(IPDEV,'STATE-VECTOR',ISTATE) + IF(ISTATE(2).EQ.0)GOTO 30 +*---- +* UPDATE ROD PROPERTIES +*---- + ITOT=0 + NROD=ISTATE(2) + JPDEV=LCMGID(IPDEV,'DEV_ROD') + IF(IMPX.GT.0)WRITE(IOUT,1000) + DO 20 ID=1,NROD + KPDEV=LCMGIL(JPDEV,ID) + IF(IMPX.GT.5)CALL LCMLIB(KPDEV) + CALL LCMGET(KPDEV,'LEVEL',LEVEL) + IF(LEVEL.LT.EPSI)GOTO 20 + CALL LCMGET(KPDEV,'ROD-NAME',INAME) + WRITE(RNAME,'(3A4)') (INAME(I),I=1,3) + CALL LCMGET(KPDEV,'ROD-PARTS',NPART) + IF(NPART.GT.MAXPRT) CALL XABORT('NEWMDV: MAXPRT OVERFLOW.') + CALL LCMGET(KPDEV,'ROD-POS',DPOS) + CALL LCMGET(KPDEV,'ROD-MIX',DMIX) + DO 10 IPART=1,NPART + IF(IMPX.GT.2)WRITE(IOUT,1001)ID,IPART,RNAME,LEVEL,DPOS(1,IPART) + CALL NEWMVF(INDX,DPOS(1,IPART),DMIX(1,IPART),NGRP,NL,NDEL,LEAK, + 1 NEL,NMIX,LX,LY,LZ,MESHX,MESHY,MESHZ,TOT0,TOT1,ZNUS,CHI,SIGF,DIFX, + 2 DIFY,DIFZ,HFAC,SCAT,XFAC,IMPX) + IF(IMPX.GT.2)WRITE(IOUT,1002) + 10 CONTINUE + ITOT=ITOT+1 + 20 CONTINUE + IF(IMPX.GT.0)WRITE(IOUT,1003)ITOT + 30 IF(ISTATE(4).EQ.0)GOTO 50 +*---- +* UPDATE LZC PROPERTIES +*---- + ITOT=0 + NLZC=ISTATE(4) + JPDEV=LCMGID(IPDEV,'DEV_LZC') + IF(IMPX.GT.0)WRITE(IOUT,1004) + DO 40 ID=1,NLZC + KPDEV=LCMGIL(JPDEV,ID) + IF(IMPX.GT.2)WRITE(IOUT,1005)ID + IF(IMPX.GT.5)CALL LCMLIB(KPDEV) +* EMPTY-PART + CALL LCMGET(KPDEV,'EMPTY-POS',DPOS) + CALL LCMGET(KPDEV,'EMPTY-MIX',DMIX) + IF(IMPX.GT.2)WRITE(IOUT,1006)DPOS + CALL NEWMVF(INDX,DPOS(1,1),DMIX(1,1),NGRP,NL,NDEL,LEAK,NEL,NMIX, + 1 LX,LY,LZ,MESHX,MESHY,MESHZ,TOT0,TOT1,ZNUS,CHI,SIGF,DIFX,DIFY, + 2 DIFZ,HFAC,SCAT,XFAC,IMPX) +* FULL-PART + CALL LCMGET(KPDEV,'FULL-POS',DPOS) + CALL LCMGET(KPDEV,'FULL-MIX',DMIX) + IF(IMPX.GT.2)WRITE(IOUT,1007)DPOS + CALL NEWMVF(INDX,DPOS(1,1),DMIX(1,1),NGRP,NL,NDEL,LEAK,NEL,NMIX, + 1 LX,LY,LZ,MESHX,MESHY,MESHZ,TOT0,TOT1,ZNUS,CHI,SIGF,DIFX,DIFY, + 2 DIFZ,HFAC,SCAT,XFAC,IMPX) + IF(IMPX.GT.2)WRITE(IOUT,1002) + ITOT=ITOT+1 + 40 CONTINUE + IF(IMPX.GT.0)WRITE(IOUT,1008)ITOT +*---- +* STORE NEW PROPERTIES +*---- + 50 CALL NEWMPT(IPMAC,NMIX,NGRP,NL,NDEL,LEAK,TOT0,TOT1,ZNUS,CHI,SIGF, + 1 DIFX,DIFY,DIFZ,HFAC,IJJ,NJJ,SCAT) +*---- +* SCRATCH STORAGE DEALLOCATION +*---- + DEALLOCATE(NJJ,IJJ,SCAT,HFAC,DIFZ,DIFY,DIFX,SIGF,CHI,ZNUS,TOT1, + 1 TOT0) + RETURN +* + 1000 FORMAT(/1X,'**',1X,'UPDATING PROPERTIES', + 1 1X,'FOR ALL INSERTED RODS',1X,'**'/) + 1001 FORMAT( + 1 /5X,'=>',2X,'ROD-ID #',I3.3,' PART:',I4,5X,'ROD-NAME:',1X,A + 2 /1X,'ROD INSERTION LEVEL =',F8.4 + 3 /1X,'CURRENT ROD POSITION :' + 4 /1X,'X-',F10.4,5X,'Y-',F10.4,5X,'Z-',F10.4 + 5 /1X,'X+',F10.4,5X,'Y+',F10.4,5X,'Z+',F10.4) + 1002 FORMAT(/1X,38('-')/) + 1003 FORMAT(/1X,'TOTAL NUMBER OF TREATED RODS:',I3/) +* + 1004 FORMAT(/1X,'**',1X,'UPDATING PROPERTIES', + 1 1X,'FOR ALL LZC-DEVICES',1X,'**'/) + 1005 FORMAT(/5X,'=>',2X,'LZC-ID #',I2.2) + 1006 FORMAT(/1X,'EMPTY-PART POSITION :' + 1 /1X,'X-',F10.4,5X,'Y-',F10.4,5X,'Z-',F10.4 + 2 /1X,'X+',F10.4,5X,'Y+',F10.4,5X,'Z+',F10.4) + 1007 FORMAT(/1X,'FULL-PART POSITION :' + 1 /1X,'X-',F10.4,5X,'Y-',F10.4,5X,'Z-',F10.4 + 2 /1X,'X+',F10.4,5X,'Y+',F10.4,5X,'Z+',F10.4) + 1008 FORMAT(/1X,'TOTAL NUMBER OF TREATED LZC:',I2/) + END |
