diff options
Diffstat (limited to 'Dragon/src/FLU2AC.f')
| -rw-r--r-- | Dragon/src/FLU2AC.f | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/Dragon/src/FLU2AC.f b/Dragon/src/FLU2AC.f new file mode 100644 index 0000000..cdf2c41 --- /dev/null +++ b/Dragon/src/FLU2AC.f @@ -0,0 +1,84 @@ +*DECK FLU2AC + SUBROUTINE FLU2AC(NG,NUN,IG0,FLUX,AKEEP,ZMU) +* +*----------------------------------------------------------------------- +* +*Purpose: +* One-factor variationnal acceleration of the flux. +* +*Copyright: +* Copyright (C) 2002 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): R. Roy +* +*Parameters: input +* NG number of energy groups. +* NUN number of unknowns per energy group including spherical +* harmonic terms, interface currents and fundamental +* currents. +* IG0 first group to accelerate. +* +*Parameters: input/output +* FLUX neutron flux: +* FLUX(:,:,1) for old; +* FLUX(:,:,2) for present; +* FLUX(:,:,3) for new. +* AKEEP effective multiplication factor. +* +*Parameters: output +* ZMU acceleration factor. +* +*----------------------------------------------------------------------- +* + IMPLICIT NONE +*---- +* SUBROUTINE ARGUMENTS +*---- + INTEGER NG, NUN, IG0 + REAL FLUX(NUN,NG,3), ZMU + DOUBLE PRECISION AKEEP(3) +*---- +* LOCAL VARIABLES +*---- + INTEGER IG, IR + DOUBLE PRECISION DMU, R1, R2 + DOUBLE PRECISION DONE, DZERO, NOM, DENOM + PARAMETER ( DONE=1.0D0, DZERO=0.0D0 ) +*---- +* ZMU CALCULATION +*---- + NOM = DZERO + DENOM = DZERO + DO 3 IG= IG0,NG + DO 2 IR=1,NUN + R1 = FLUX(IR,IG,2) - FLUX(IR,IG,1) + R2 = FLUX(IR,IG,3) - FLUX(IR,IG,2) + NOM = NOM + R1*(R2-R1) + DENOM = DENOM + (R2-R1)*(R2-R1) + 2 CONTINUE + 3 CONTINUE +* + DMU = - NOM / DENOM + ZMU = REAL(DMU) + IF( DMU.GT.DZERO )THEN + DO 13 IG= IG0,NG + DO 12 IR=1,NUN +* +* ACCELERATED VALUES FOR PHI(2) ET PHI(3) + FLUX(IR,IG,3) = FLUX(IR,IG,2) + REAL(DMU) * + > (FLUX(IR,IG,3) - FLUX(IR,IG,2)) + FLUX(IR,IG,2) = FLUX(IR,IG,1) + REAL(DMU) * + > (FLUX(IR,IG,2) - FLUX(IR,IG,1)) + 12 CONTINUE + 13 CONTINUE + AKEEP(3)= AKEEP(2) + DMU * (AKEEP(3)-AKEEP(2)) + AKEEP(2)= AKEEP(1) + DMU * (AKEEP(2)-AKEEP(1)) + ELSE + ZMU= 1.0 + ENDIF + RETURN + END |
