summaryrefslogtreecommitdiff
path: root/Dragon/src/MOCFFAL.f
diff options
context:
space:
mode:
Diffstat (limited to 'Dragon/src/MOCFFAL.f')
-rw-r--r--Dragon/src/MOCFFAL.f190
1 files changed, 190 insertions, 0 deletions
diff --git a/Dragon/src/MOCFFAL.f b/Dragon/src/MOCFFAL.f
new file mode 100644
index 0000000..fb23dfe
--- /dev/null
+++ b/Dragon/src/MOCFFAL.f
@@ -0,0 +1,190 @@
+*DECK MOCFFAL
+ SUBROUTINE MOCFFAL(SUBSCH,NR,NS,MT,LINE,SEGLEN,NRSEG,NE,NFX,
+ 1 MATALB,DWEIG,SIGANG,YG,FLM,FLP,DFLM,DFLP,NPHI,NSUB,KANGL,TRHAR,
+ 2 PHIV,DPHIV,DSIG,EXPT,EXP2,CYM1,CYP1,CYM2,CYP2)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Solution of transport equation on a cyclic track.
+* Linear-discontinuous-characteristics approximation.
+* Ray-tracing (anisotropic scattering case, 'source term isolation'
+* off).
+*
+*Copyright:
+* Copyright (C) 2015 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): A. Hebert
+*
+*Parameters: input
+* SUBSCH track coefficients calculation subroutine.
+* NR number of volumes.
+* NS number of surfaces.
+* MT number of material mixtures.
+* LINE number of segments on this tracking line.
+* SEGLEN vector containing the lenght of the different segments of this
+* track.
+* NRSEG vector containing the region number of the different segments
+* of this track.
+* NE order of the polar quadrature set.
+* NFX number of moments of the spherical harmonics.
+* MATALB index-number of the mixture assigned to each volume
+* and the albedo to each surface.
+* DWEIG track weight per polar angle.
+* SIGANG total cross-sections and albedos.
+* YG inverse of polar quadrature cosines.
+* FLM total source vector for + direction.
+* FLP total source vector for - direction.
+* DFLM linear component of the total source vector for + direction.
+* DFLP linear component of the total source vector for - direction.
+* NPHI number of angles in the plane.
+* NSUB number of subtracks.
+* KANGL angle indices per subtrack.
+* TRHAR spherical harmonics components for this angle in the plan.
+*
+*Parameters: output
+* PHIV vector containing the zonal scalar flux (component 1).
+* DPHIV vector containing the zonal scalar flux (components 2 and 3).
+*
+*Parameters: scratch
+* DSIG undefined.
+* EXPT track coefficient.
+* EXP2 quadratic expansion of (1-exp(-a*L))/L with small argument.
+* CYM1 undefined.
+* CYP1 undefined.
+* CYM2 undefined.
+* CYP2 undefined.
+*
+*-----------------------------------------------------------------------
+*
+ IMPLICIT NONE
+*----
+* SUBROUTINE ARGUMENTS
+*----
+ INTEGER NR,NS,MT,LINE,NRSEG(LINE),NE,NFX,MATALB(-NS:NR),NPHI,
+ 1 NSUB,KANGL(NSUB)
+ REAL SIGANG(-6:MT),YG(NE),TRHAR(NE,NFX,NPHI,2)
+ DOUBLE PRECISION SEGLEN(LINE),DWEIG(NE),FLM(NE,LINE),FLP(NE,LINE),
+ 1 DFLM(NE,LINE),DFLP(NE,LINE),PHIV(NFX,NR),DPHIV(2*NFX,NR),
+ 2 DSIG(LINE),EXPT(NE,LINE),EXP2(5,NE,LINE),CYM1(NE,LINE),
+ 3 CYP1(NE,LINE),CYM2(NE,LINE),CYP2(NE,LINE)
+ EXTERNAL SUBSCH
+*----
+* LOCAL VARIABLES
+*----
+ INTEGER MXE
+ PARAMETER (MXE=64)
+ DOUBLE PRECISION ONE,ZERO
+ PARAMETER (ONE=1.D0,ZERO=0.D0)
+ INTEGER IE,NOIL,IL,JL,JF,ISUB,IANG
+ REAL ETA,XI
+ DOUBLE PRECISION TEMP1,TEMP2,TEMP3,FL0(MXE),CY0(MXE),FL1(MXE),
+ 1 CY1(MXE),DH
+ LOGICAL LNEW
+*
+ FL0(:NE)= ZERO
+ FL1(:NE)= ZERO
+ CY0(:NE)= ONE
+ CY1(:NE)= ONE
+*----
+* Calculation of the coefficients for this track.
+*----
+* MOCSCAL: Linear discontinuous-Characteristics Scheme with
+* Tabulated Exponentials
+* MOCDDFL: Diamond-Differencing DD1 Scheme
+* MOCSCEL: Linear discontinuous-Characteristics Scheme with
+* Exact Exponentials
+ CALL SUBSCH(LINE,NR,NS,MT,NRSEG,MATALB,SEGLEN,SIGANG(-6),DSIG,
+ 1 EXPT,EXP2,NE,YG)
+*----
+* Summation along the track in both directions
+*----
+ DO 2226 IL= 1, LINE
+ JL= LINE + 1 - IL
+ DO 2225 IE=1,NE
+* + direction
+ NOIL = NRSEG(IL)
+ TEMP1 = FL1(IE)
+ TEMP2 = FLP(IE,IL)
+ TEMP3 = DFLP(IE,IL)
+ DH = SEGLEN(IL)*YG(IE)
+ FL1(IE) = TEMP1*EXPT(IE,IL) + TEMP2*EXP2(1,IE,IL)
+ 1 - TEMP3*EXP2(3,IE,IL)*DSIG(IL)
+ FLP(IE,IL) = TEMP1*EXP2(1,IE,IL) + TEMP2*EXP2(2,IE,IL)
+ 1 + TEMP3*EXP2(3,IE,IL)
+ DFLP(IE,IL)= TEMP1*EXP2(4,IE,IL)-TEMP2*EXP2(3,IE,IL)/(DH*DH)
+ 1 + TEMP3*EXP2(5,IE,IL)*DSIG(IL)
+ CYP1(IE,IL)= CY1(IE) * EXP2(1,IE,IL)
+ CYP2(IE,IL)= CY1(IE) * EXP2(4,IE,IL)
+ CY1(IE) = CY1(IE) * EXPT(IE,IL)
+*
+* - direction
+ TEMP1 = FL0(IE)
+ TEMP2 = FLM(IE,JL)
+ TEMP3 = DFLM(IE,JL)
+ DH = SEGLEN(JL)*YG(IE)
+ FL0(IE) = TEMP1*EXPT(IE,JL) + TEMP2*EXP2(1,IE,JL)
+ 1 - TEMP3*EXP2(3,IE,JL)*DSIG(JL)
+ FLM(IE,JL) = TEMP1*EXP2(1,IE,JL) + TEMP2*EXP2(2,IE,JL)
+ 1 + TEMP3*EXP2(3,IE,JL)
+ DFLM(IE,JL)= TEMP1*EXP2(4,IE,JL)-TEMP2*EXP2(3,IE,JL)/(DH*DH)
+ 1 + TEMP3*EXP2(5,IE,JL)*DSIG(JL)
+ CYM1(IE,JL)= CY0(IE) * EXP2(1,IE,JL)
+ CYM2(IE,JL)= CY0(IE) * EXP2(4,IE,JL)
+ CY0(IE) = CY0(IE) * EXPT(IE,JL)
+ 2225 CONTINUE
+ 2226 CONTINUE
+ DO 2230 IE=1,NE
+ TEMP1=ONE-CY0(IE)
+ IF (TEMP1.GT.ZERO) THEN
+ FL0(IE)= FL0(IE)/TEMP1
+ ELSE
+ FL0(IE)= ZERO
+ ENDIF
+ TEMP1=ONE-CY1(IE)
+ IF (TEMP1.GT.ZERO) THEN
+ FL1(IE)= FL1(IE)/TEMP1
+ ELSE
+ FL1(IE)= ZERO
+ ENDIF
+ 2230 CONTINUE
+ ISUB=0
+ IANG=0
+ LNEW=.TRUE.
+ DO 2240 IL= 1, LINE
+ NOIL = NRSEG(IL)
+ IF(NOIL.LE.0) THEN
+ LNEW=.TRUE.
+ ELSE
+ IF(LNEW) THEN
+ ISUB=ISUB+1
+ IANG=KANGL(ISUB)
+ LNEW=.FALSE.
+ ENDIF
+ DO 2242 IE=1,NE
+ ETA=TRHAR(IE,3,IANG,1)
+ XI=TRHAR(IE,2,IANG,1)
+ DO 2241 JF=1,NFX
+ TEMP1=TRHAR(IE,JF,IANG,1)
+ TEMP2=TRHAR(IE,JF,IANG,2)
+ PHIV(JF,NOIL)=PHIV(JF,NOIL)+DWEIG(IE)*
+ > ((FLM(IE,IL)+FL0(IE)*CYM1(IE,IL))*TEMP2+
+ > (FLP(IE,IL)+FL1(IE)*CYP1(IE,IL))*TEMP1)
+ DPHIV(JF,NOIL)=DPHIV(JF,NOIL)+DWEIG(IE)*ETA*
+ > (-(DFLM(IE,IL)+FL0(IE)*CYM2(IE,IL))*TEMP2+
+ > (DFLP(IE,IL)+FL1(IE)*CYP2(IE,IL))*TEMP1)
+ DPHIV(NFX+JF,NOIL)=DPHIV(NFX+JF,NOIL)+DWEIG(IE)*XI*
+ > (-(DFLM(IE,IL)+FL0(IE)*CYM2(IE,IL))*TEMP2+
+ > (DFLP(IE,IL)+FL1(IE)*CYP2(IE,IL))*TEMP1)
+ 2241 CONTINUE
+ 2242 CONTINUE
+ ENDIF
+ 2240 CONTINUE
+ IF(ISUB.NE.NSUB) CALL XABORT('MOCFFAL: NSUB INCONSISTENCY')
+*
+ RETURN
+ END