Bonjour.
je rencontre des problèmes sur des tableaux allouable selon que je compile le même code avec gfortran ou ifort.
Mon but est en faite de réaliser des sections de tableaux.
Cette différence vous est-elle connu ?

Sous GNU j'ai fait :

_ESSAI_TABLEAU.f____________________
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
      PROGRAM ESSAI_TABLEAU   
      CHARACTER(11)      :: NOMFICH = 'results.txt'
 
      IMPLICIT NONE
      INTEGER :: I
      INTEGER, DIMENSION(:) , ALLOCATABLE  :: MAT_I_1
 
      MAT_I_1=(/ (i,i=1,10) /)
 
      OPEN(UNIT=NUMFICH, FILE=NOMFICH, 
     &    FORM='FORMATTED',STATUS='REPLACE')
 
      print *, '--------------'
      print *, 'ESSAI_TABLEAU_DEBUT '
      print *, 'MAT_I_1',    MAT_I_1
 
      print *, 'ESSAI_TABLEAU_FIN '
      MAT_I_1=MAT_I_1((/ (i,i=3,8) /))
 
      print *, '--------------'
      print *, 'MAT_I_1',    MAT_I_1
 
      CLOSE(NUMFICH)
 
      END PROGRAM ESSAI_TABLEAU
_ESSAI_TABLEAU.f____________________

Et j'obtiens bien en sortie :

_results.txt____________________
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
--------------
 ESSAI_TABLEAU_DEBUT 
 MAT_I_1           1           2           3           4           5           6           7           8           9          10
 ESSAI_TABLEAU_FIN 
 --------------
 MAT_I_1           3           4           5           6           7           8
_results.txt____________________


Mon Makefile :
_Makefile____________________
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
# FC = the compiler to use
FC=gfortran
 
# flags for debugging or for maximum performance, comment as necessary
FCFLAGS = -g -fbounds-check
#FCFLAGS = -O2
 
 
# List of executables to be built within the package
PROGRAMS = ESSAI_TABLEAU
 
# "make" builds all
all: $(PROGRAMS)
_Makefile____________________

Sous ifort ce programme ne fonctionne pas du tout !
On ne peut pas réaliser l'allocation et l'initialisation en une seule étape à la volé comme je l'ai fait à la ligne 9, ni réaliser de section de tableau directement dans le même tableau comme je l'ai fais à la ligne 19. Je suis obligé d'écrire :


_ESSAI_TABLEAU.f____________________
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
      PROGRAM ESSAI_TABLEAU   
      CHARACTER(11)      :: NOMFICH = 'results.txt'
 
      IMPLICIT NONE
      INTEGER :: I
      INTEGER, DIMENSION(:) , ALLOCATABLE  :: MAT_I_1 , TEMP
 
 
      ALLOCATE(MAT_I_1(10))
      ALLOCATE(TEMP(10))
      MAT_I_1=(/ (i,i=1,10) /)
 
 
 
      OPEN(UNIT=NUMFICH, FILE=NOMFICH, 
     &    FORM='FORMATTED',STATUS='REPLACE')
 
      print *, '--------------'
      print *, 'ESSAI_TABLEAU_DEBUT '
      print *, 'MAT_I_1',    MAT_I_1
 
      print *, 'ESSAI_TABLEAU_FIN ' 
      TEMP = MAT_I_1
      DEALLOCATE(MAT_I_1)
      ALLOCATE(MAT_I_1(6))
      MAT_I_1=TEMP((/ (i,i=3,8) /))
      DEALLOCATE(TEMP)
      print *, '--------------'
      print *, 'MAT_I_1',    MAT_I_1
 
      CLOSE(NUMFICH)
 
      END PROGRAM ESSAI_TABLEAU
_ESSAI_TABLEAU.f____________________


Est-ce que vous êtes au courant de ce genre de "petite" différences bien ennuyante. Sont-elles documentés quelques part ?

Merci beaucoup.