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 :
le tableau est lu sur Ni*Nj*Nk lignes et sur num_var colonnes.num_zo = nombre de zone lue.
Ni*Nj*Nk = nombre de lignes du tableau T
num_var = nombre de colonnes du tableau t
Pour chaque num_zo, Ni, Nj,Nk varient :
le problème est la taille du tableau T ou je stocke des valeurs pour chaque zone.
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
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
Partager