summaryrefslogtreecommitdiff
path: root/Dragon/src/SENCNT.f
diff options
context:
space:
mode:
Diffstat (limited to 'Dragon/src/SENCNT.f')
-rw-r--r--Dragon/src/SENCNT.f148
1 files changed, 148 insertions, 0 deletions
diff --git a/Dragon/src/SENCNT.f b/Dragon/src/SENCNT.f
new file mode 100644
index 0000000..e712e41
--- /dev/null
+++ b/Dragon/src/SENCNT.f
@@ -0,0 +1,148 @@
+*DECK SENCNT
+ SUBROUTINE SENCNT(IPLIB,NI,NAMISO,MELISO,NSENS,NSENI,NAMISC,ISOC,
+ > NIC)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Count the number of sensitivity coefficients.
+*
+*Copyright:
+* Copyright (C) 2011 Ecole Polytechnique de Montreal
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version
+*
+*Author(s): C. Laville, G. Marleau
+*
+*Parameters: input/output
+* IPLIB LCM Library object address.
+* NI number of isotope/mixture.
+* NAMISO name of the isotope/mixture.
+* MELISO mixture associated with the isotope/mixture.
+* NSENS number of sensitivity profiles.
+* NSENI number of integrated sensitivity profiles.
+* NAMISC independent isotopes names.
+* ISOC independent isotope number associated with isotope/mixture.
+* NIC number of independent isotopes names.
+*
+*-----------------------------------------------------------------------
+*
+ USE GANLIB
+*----
+* Suboutine arguements
+*----
+ IMPLICIT NONE
+ TYPE(C_PTR) IPLIB
+ INTEGER NI
+ INTEGER NAMISO(3,NI),MELISO(NI)
+ INTEGER NSENS,NSENI
+ INTEGER NAMISC(2,NI),ISOC(NI),NIC
+*----
+* Parameters
+*----
+ INTEGER IOUT
+ CHARACTER NAMSBR*6
+ PARAMETER (IOUT=6,NAMSBR='SENCNT')
+*----
+* Local variables
+*----
+ TYPE(C_PTR) KPISO
+ CHARACTER ISONAM*12,HSMG*131
+ INTEGER ILENG,ITYLCM,II,IJ,ISOMEL
+ TYPE(C_PTR), ALLOCATABLE, DIMENSION(:) :: IPISO
+*----
+* Initialize the directory of the isotope/mixture
+* in the library and initialize the SEN information
+* support and the cross section support for the isotope
+*----
+ NIC=0
+ NSENS=0
+ NSENI=0
+ ISOC(:NI)=0
+*----
+* Find independent isotopes names NAMISC
+* Associate isotope in mixture to
+* independant isotopes names ISOC
+*----
+ DO II=1,NI
+ IF(ISOC(II) .EQ. 0) THEN
+ NIC=NIC+1
+ NAMISC(1,NIC)=NAMISO(1,II)
+ NAMISC(2,NIC)=NAMISO(2,II)
+ ISOC(II)=NIC
+ DO IJ=II+1,NI
+ IF(NAMISC(1,NIC) .EQ. NAMISO(1,IJ) .AND.
+ > NAMISC(2,NIC) .EQ. NAMISO(2,IJ)) THEN
+ ISOC(IJ)=-NIC
+ ENDIF
+ ENDDO
+ ENDIF
+ ENDDO
+*
+ ALLOCATE(IPISO(NI))
+ CALL LIBIPS(IPLIB,NI,IPISO)
+ DO II=1,NI
+ KPISO=IPISO(II) ! set II-th isotope
+ IF(.NOT.C_ASSOCIATED(KPISO)) THEN
+ WRITE(ISONAM,'(3A4)') NAMISO(1,II),NAMISO(2,II),NAMISO(3,II)
+ WRITE(HSMG,'(17HSENCNT: ISOTOPE '',A12,7H'' (ISO=,I8,5H) IS ,
+ 1 30HNOT AVAILABLE IN THE MICROLIB.)') ISONAM,II
+ CALL XABORT(HSMG)
+ ENDIF
+ ISOMEL=MELISO(II)
+*----
+* number of (n,g) sensitivity
+*----
+ CALL LCMLEN(KPISO,'NG',ILENG,ITYLCM)
+ IF(ILENG.GT.0) THEN
+ NSENS=NSENS+1
+ IF(ISOC(II) .GT. 0) NSENI=NSENI+1
+ ENDIF
+*----
+* number of (n,p) sensitivity
+*----
+ CALL LCMLEN(KPISO,'NP',ILENG,ITYLCM)
+ IF(ILENG.GT.0) THEN
+ NSENS=NSENS+1
+ IF(ISOC(II) .GT. 0) NSENI=NSENI+1
+ ENDIF
+*----
+* number of (n,d) sensitivity
+*----
+ CALL LCMLEN(KPISO,'ND',ILENG,ITYLCM)
+ IF(ILENG.GT.0) THEN
+ NSENS=NSENS+1
+ IF(ISOC(II) .GT. 0) NSENI=NSENI+1
+ ENDIF
+*----
+* number of (n,a) sensitivity
+*----
+ CALL LCMLEN(KPISO,'NA',ILENG,ITYLCM)
+ IF(ILENG.GT.0) THEN
+ NSENS=NSENS+1
+ IF(ISOC(II) .GT. 0) NSENI=NSENI+1
+ ENDIF
+*----
+* number of Capture sensitivity
+*----
+ NSENS=NSENS+1
+ IF(ISOC(II) .GT. 0) NSENI=NSENI+1
+*----
+* number of Scattering sensitivity
+*----
+ NSENS=NSENS+1
+ IF(ISOC(II) .GT. 0) NSENI=NSENI+1
+*----
+* number of Fissile related sensitivity
+*----
+ CALL LCMLEN(KPISO,'NUSIGF',ILENG,ITYLCM)
+ IF(ILENG.GT.0) THEN
+ NSENS=NSENS+3
+ IF(ISOC(II) .GT. 0) NSENI=NSENI+3
+ ENDIF
+ ENDDO
+ DEALLOCATE(IPISO)
+ RETURN
+ END