Statistiques
| Révision :

root / src / Expand.f90 @ 4

Historique | Voir | Annoter | Télécharger (1,14 ko)

1
SUBROUTINE Expand(List,Idx,Dim)
2

    
3
  ! This subroutine expands a list entered in a compacted form
4
  ! ie 1 -10 => 1 2 3  4 5 6 7 8 9 10
5

    
6
  use VarTypes
7

    
8
  INTEGER(KINT), INTENT(IN) :: Dim
9
  INTEGER(KINT), INTENT(INOUT) :: List(Dim)
10
  INTEGER(KINT), INTENT(INOUT) :: Idx
11

    
12
  LOGICAL, ALLOCATABLE :: FTmp(:) ! Dim
13
  LOGICAL :: Debug
14
  INTEGER(KINT) :: i
15

    
16
  INTERFACE
17
     function valid(string) result (isValid)
18
       CHARACTER(*), intent(in) :: string
19
       logical                  :: isValid
20
     END function VALID
21

    
22
  END INTERFACE
23

    
24
  Debug=valid('Expand')
25

    
26
  Allocate(FTmp(Dim))
27
  FTmp=.FALSE.
28

    
29
  Idx=1
30

    
31
  DO WHILE (List(Idx).NE.0)
32
     If (List(Idx).LT.0) THEN
33
        DO I=List(Idx-1),abs(List(Idx))
34
           IF (.NOT.FTmp(I)) THEN
35
              FTmp(I)=.TRUE.
36
           END IF
37
        END DO
38
     ELSEIF (.NOT.FTmp(List(Idx))) THEN
39
        FTmp(List(Idx))=.TRUE.
40
     END IF
41
     Idx=Idx+1
42
  END DO
43

    
44
  if (debug) WRITE(*,*) "DBG Expand,  List",List
45

    
46
  ! We convert List into non compacted form
47
  Idx=1
48
  DO I=1,Dim
49
     If(Ftmp(I)) THEN
50
        List(Idx)=I
51
        Idx=Idx+1
52
     END IF
53
  END DO
54
  List(Idx)=0
55
  Idx=Idx-1
56

    
57
 DEALLOCATE(Ftmp)
58

    
59
END SUBROUTINE Expand