Bonjour encore !

j'ai un problème d'allocation de mémoire d'un tableau que je dois lire dans un fichier, voici mon code tout simple :

num_zo = nombre de zone lue.
Ni*Nj*Nk = nombre de lignes du tableau T
num_var = nombre de colonnes du tableau t
le tableau est lu sur Ni*Nj*Nk lignes et sur num_var colonnes.

Pour chaque num_zo, Ni, Nj,Nk varient :

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
integer, dimension(:),allocatable :: Ni,Nj,Nk,ifin
real*8, dimension(:,:),allocatable :: T
 
allocate(Ni(num_zo))
allocate(Nj(num_zo))
allocate(Nk(num_zo))
 
do i=1,num_zo
read(7,*) i1,i2,i3
Ni(i)=i1  ! On récupère les dimensions pour chaque zone
Nj(i)=i2
Nk(i)=i3
ifin(i)=Ni(i)*Nj(i)*Nk(i) ! ifin(i) determine le nombre de lignes lues dans le fichier)
!allocate(T(num_var,ifin(i)) ! c'est ici mon problème
do j=1,ifin(i)
read(7,*) T(1:num_var,j)
enddo
enddo
le problème est la taille du tableau T ou je stocke des valeurs pour chaque zone.
car quand je mets : allocate(T(num_var,ifin(i)), j'ai une erreur : attempting to allocate already allocated array

avez vous une astuce pour eviter cette erreur?

Merci