diff options
Diffstat (limited to 'Dragon/src/BIVS04.f')
| -rw-r--r-- | Dragon/src/BIVS04.f | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/Dragon/src/BIVS04.f b/Dragon/src/BIVS04.f new file mode 100644 index 0000000..6db43ca --- /dev/null +++ b/Dragon/src/BIVS04.f @@ -0,0 +1,108 @@ +*DECK BIVS04 + SUBROUTINE BIVS04(MAXKN,MAXQF,NREG,NUN,LL4,ISPLH,IIMAX,SIDE,KN, + 1 QFR,BFR,VOL,IDL,MU,SOURCE,SYS,FUNKNO) +* +*----------------------------------------------------------------------- +* +*Purpose: +* One-speed flux calculation in mixed-dual finite element approximation +* (hexagonal geometry). +* +*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): A. Hebert +* +*Parameters: input +* MAXKN dimension of array KN. +* MAXQF dimension of arrays QFR and BFR. +* NREG number of hexagons in BIVAC. +* NUN dimension of array FUNKNO. +* LL4 number of unknowns per group in BIVAC. Equal to the number +* of finite elements (hexagons or triangles) excluding the +* virtual elements. +* ISPLH type of hexagonal mesh-splitting: +* =1: hexagonal elements; >1: triangular elements. +* IIMAX allocated dimension of array SYS. +* SIDE side of the hexagons. +* KN element-ordered unknown list. +* QFR element-ordered information. +* BFR element-ordered surface fractions. +* VOL volume of hexagons. +* IDL position of the average flux component associated with +* each volume. +* MU indices used with the compressed diagonal storage mode matrix +* SYS. +* SOURCE fission and diffusion sources. +* SYS factorized system matrix. +* +*Parameters: output +* FUNKNO neutron fluxes (surface-averaged flux are in position +* FUNKNO(NUN)). +* +*----------------------------------------------------------------------- +* +*---- +* SUBROUTINE ARGUMENTS +*---- + INTEGER MAXKN,MAXQF,NREG,NUN,LL4,ISPLH,IIMAX,KN(MAXKN),IDL(NREG), + 1 MU(LL4) + REAL SIDE,QFR(MAXQF),BFR(MAXQF),VOL(NREG),SOURCE(LL4),SYS(IIMAX), + 1 FUNKNO(NUN) +* + IF(ISPLH.EQ.1) THEN + DS=SQRT(3.0)*SIDE + FACT=2.0/(3.0*DS) + NSURF=6 + ELSE + DS=SIDE/(SQRT(3.0)*REAL(ISPLH-1)) + FACT=4.0/(3.0*DS) + NSURF=3 + ENDIF +*---- +* RESOLUTION. +*---- + DO 10 I=1,LL4 + FUNKNO(I)=SOURCE(I) + 10 CONTINUE + CALL ALLDLS (LL4,MU,SYS,FUNKNO) +*---- +* CALCULATION OF ELEMENT-AVERAGED FLUXES. +*---- + IF(ISPLH.GT.1) THEN + NSURF=3 + DO 20 K=1,NREG + IF(IDL(K).NE.0) FUNKNO(IDL(K))=0.0 + 20 CONTINUE + NUM1=0 + DO 40 IND1=1,LL4 + K=KN(NUM1+NSURF+1) + IF(VOL(K).EQ.0.0) GO TO 30 + FUNKNO(IDL(K))=FUNKNO(IDL(K))+QFR(NUM1+NSURF+1)*FUNKNO(IND1)/ + 1 VOL(K) + 30 NUM1=NUM1+NSURF+1 + 40 CONTINUE + ELSE + NSURF=6 + ENDIF +*---- +* CALCULATION OF SURFACE-AVERAGED FLUX. +*---- + FUNKNO(NUN)=0.0 + NUM1=0 + DO 70 IND1=1,LL4 + K=KN(NUM1+NSURF+1) + IF(VOL(K).EQ.0.0) GO TO 60 + DO 50 IC=1,NSURF + IF(BFR(NUM1+IC).GT.0.0) THEN + FUNKNO(NUN)=FUNKNO(NUN)+FUNKNO(IND1)*BFR(NUM1+IC) + ENDIF + 50 CONTINUE + 60 NUM1=NUM1+NSURF+1 + 70 CONTINUE + RETURN + END |
