summaryrefslogtreecommitdiff
path: root/Donjon/src/CREINT.f
diff options
context:
space:
mode:
Diffstat (limited to 'Donjon/src/CREINT.f')
-rw-r--r--Donjon/src/CREINT.f136
1 files changed, 136 insertions, 0 deletions
diff --git a/Donjon/src/CREINT.f b/Donjon/src/CREINT.f
new file mode 100644
index 0000000..76d3d43
--- /dev/null
+++ b/Donjon/src/CREINT.f
@@ -0,0 +1,136 @@
+*DECK CREINT
+ SUBROUTINE CREINT(IPCPO,NISO,DERIV,NBURN,KBURN,BURN0,BURN1,NGRP,
+ 1 NL,IMPX,HISO,ITY,CONC,ILEAK,TOTAL,ZNUG,SNUGF,CHI,OVERV,DIFFX,
+ 2 DIFFY,DIFFZ,H,SCAT,FLUX,UPS)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Recover and interpolate l_compo information according to burnup and
+* extracted isotope density.
+*
+*Copyright:
+* Copyright (C) 2007 Ecole Polytechnique de Montreal.
+*
+*Author(s):
+* A. Hebert
+*
+*Parameters: input
+* IPCPO pointer to l_compo information.
+* NISO 1+number of extracted isotopes.
+* DERIV =.true.: derivative of macrolib info is computed with
+* respect to burn1.
+* UPS =.true.: no upscatering cross sections will be stored.
+* NBURN number of tabulated burnup steps.
+* KBURN =0: no burnup parameters; =1: use mw day/tonne of initial
+* heavy elements).
+* BURN0 user defined initial burnup.
+* BURN1 user defined final burnup:
+* if burn0=burn1, a simple interpolation is performed;
+* if burn0<burn1, a time-average calculation is performed.
+* NGRP number of energy groups.
+* NL number of legendre orders (=1 for isotropic scattering).
+* IMPX print parameter (=0 for no print).
+* HISO hollerith name information for extracted isotopes.
+* ITY =0: do not process the isotope; =1: use number density
+* stored in conc(i); =2: use number density stored in compo.
+* CONC user defined number density.
+* ILEAK
+*
+*Parameters: output
+* TOTAL total macroscopic x-sections.
+* ZNUG nu*fission macroscopic x-sections.
+* SNUGF fission macroscopic x-sections.
+* CHI fission spectrum.
+* OVERV reciprocal neutron velocities.
+* DIFFX x-directed diffusion coefficients.
+* DIFFY y-directed diffusion coefficients.
+* DIFFZ z-directed diffusion coefficients.
+* H h-factors (kappa*fission macroscopic x-sections).
+* SCAT scattering macroscopic x-sections.
+* FLUX integrated fluxes.
+*
+*-----------------------------------------------------------------------
+*
+ USE GANLIB
+*----
+* SUBROUTINE ARGUMENTS
+*----
+ TYPE(C_PTR) IPCPO
+ INTEGER NISO,NGRP,IMPX,NBURN,KBURN,HISO(3*NISO),ITY(NISO),ILEAK
+ REAL CONC(NISO),TOTAL(NGRP),ZNUG(NGRP),SNUGF(NGRP),CHI(NGRP),
+ 1 OVERV(NGRP),DIFFX(NGRP),DIFFY(NGRP),DIFFZ(NGRP),H(NGRP),
+ 2 SCAT(NL,NGRP,NGRP),FLUX(NGRP),BURN0,BURN1
+ LOGICAL DERIV,UPS
+*----
+* LOCAL VARIABLES
+*----
+ CHARACTER TEXT12*12
+ REAL, ALLOCATABLE, DIMENSION(:) :: BURNUP,DENSIT
+*----
+* SCRATCH STORAGE ALLOCATION
+*----
+ ALLOCATE(BURNUP(NBURN),DENSIT(NISO))
+*----
+* CASE WITH NO BURNUP
+*----
+ IF(KBURN.EQ.0)THEN
+ CALL LCMSIX(IPCPO,'BURN 1',1)
+ CALL LCMGET(IPCPO,'ISOTOPESDENS',DENSIT)
+ IF(DENSIT(1).NE.1.)CALL XABORT('@CREINT: DENSIT(1).NE.1.')
+ DO I=2,NISO
+ IF(ITY(I).EQ.0)THEN
+ DENSIT(I)=0.
+ ELSEIF(ITY(I).EQ.1)THEN
+ DENSIT(I)=CONC(I)
+ ELSEIF(ITY(I).NE.2)THEN
+ CALL XABORT('@CREINT: INVALID VALUE OF ITY.')
+ ENDIF
+ ENDDO
+ CALL CREMAC(IPCPO,NISO,NGRP,NL,IMPX,HISO,DENSIT,ILEAK,TOTAL,
+ 1 ZNUG,SNUGF,CHI,OVERV,DIFFX,DIFFY,DIFFZ,H,SCAT,FLUX,UPS)
+ CALL LCMSIX(IPCPO,' ',2)
+ ELSE
+*----
+* CASE WITH BURNUP
+*----
+ CALL LCMGET(IPCPO,'BURNUP',BURNUP)
+ TEXT12=' '
+ IF(BURN0.EQ.BURN1)THEN
+ DO I=1,NBURN
+ IF(BURN0.EQ.BURNUP(I))THEN
+ WRITE(TEXT12,'(4HBURN,4X,I4)') I
+ GOTO 30
+ ENDIF
+ ENDDO
+ ENDIF
+ 30 IF((TEXT12.NE.' ').AND.(.NOT.DERIV))THEN
+* BURN0=BURN1 IS A TABULATION POINT.
+ CALL LCMSIX(IPCPO,TEXT12,1)
+ CALL LCMGET(IPCPO,'ISOTOPESDENS',DENSIT)
+ IF(DENSIT(1).NE.1.)CALL XABORT('@CREINT: DENSIT(1).NE.1.')
+ DO I=2,NISO
+ IF(ITY(I).EQ.0)THEN
+ DENSIT(I)=0.
+ ELSEIF(ITY(I).EQ.1)THEN
+ DENSIT(I)=CONC(I)
+ ELSEIF(ITY(I).NE.2)THEN
+ CALL XABORT('@CREINT: INVALID VALUE OF ITY.')
+ ENDIF
+ ENDDO
+ CALL CREMAC(IPCPO,NISO,NGRP,NL,IMPX,HISO,DENSIT,ILEAK,TOTAL,
+ 1 ZNUG,SNUGF,CHI,OVERV,DIFFX,DIFFY,DIFFZ,H,SCAT,FLUX,UPS)
+ CALL LCMSIX(IPCPO,' ',2)
+ ELSE
+* INTERPOLATION IS REQUIRED.
+ CALL CREBUR(IPCPO,NISO,NGRP,NL,IMPX,HISO,DERIV,NBURN,BURN0,
+ 1 BURN1,BURNUP,ITY,CONC,ILEAK,TOTAL,ZNUG,SNUGF,CHI,OVERV,
+ 2 DIFFX,DIFFY,DIFFZ,H,SCAT,FLUX,UPS)
+ ENDIF
+ ENDIF
+*----
+* SCRATCH STORAGE DEALLOCATION
+*----
+ DEALLOCATE(DENSIT,BURNUP)
+ RETURN
+ END