summaryrefslogtreecommitdiff
path: root/Dragon/src/PSPFCD.f
blob: bfcf49400c04a107e8c3e50e5afd79e7ee4d7074 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
*DECK PSPFCD
      SUBROUTINE PSPFCD(IPFL,NGROUP,NUNKNO,IGR,ICOND,
     >                  FLUXC,FLUXR)
*
*-----------------------------------------------------------------------
*
*Purpose:
* To condense flux for PSP.
*
*Copyright:
* Copyright (C) 2005 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):
* G. Marleau
*
*Parameters: input
* IPFL    pointer to the FLUX data structure.
* NGROUP  number of groups.
* NUNKNO  number of flux unknowns.
* IGR     condensed group number.
* ICOND   group limit for condensed group.
*
*Parameters: output
* FLUXC   condensed flux.
* FLUXR   multigroup flux read.
*
*-----------------------------------------------------------------------
*
      USE              GANLIB
      IMPLICIT         NONE
      INTEGER          IOUT
      CHARACTER        NAMSBR*6
      PARAMETER       (IOUT=6,NAMSBR='PSPFCD')
*----
*  ROUTINE PARAMETERS
*----
      TYPE(C_PTR)      IPFL
      INTEGER          NGROUP,NUNKNO,IGR
      INTEGER          ICOND(NGROUP)
      REAL             FLUXC(NUNKNO),FLUXR(NUNKNO)
*----
*  LOCAL PARAMETERS
*----
      TYPE(C_PTR)      JPFL
      INTEGER          IGC,IGD,IGF,IUN
*
      FLUXC(:NUNKNO)=0.0
      IGF=ICOND(IGR)
      IF(IGR .EQ. 1) THEN
        IGD=1
      ELSE
        IGD=ICOND(IGR-1)+1
      ENDIF
      JPFL=LCMGID(IPFL,'FLUX')
      DO IGC=IGD,IGF
        CALL LCMGDL(JPFL,IGC,FLUXR)
        DO IUN=1,NUNKNO
           FLUXC(IUN)=FLUXC(IUN)+FLUXR(IUN)
        ENDDO
      ENDDO
*----
*  RETURN
*----
      RETURN
      END