Eh oui, a peine un problème est il réglé qu'un autre apparaît aussitôt !

Mon problème est le suivant :


Mes variables sont :

integer, parameter :: nbniv=220 !nb total de niveaux dans le modele CR
integer, parameter :: nfreq=3000
real, dimension(nbniv) :: ener,g
integer, dimension(nbniv) :: n,charge,nlast,llast,nel_eq
integer, dimension(3) :: i0_ion
integer, dimension(10) :: aa, bb
real, dimension(10) :: corr_ener
real, dimension(nbniv,nbniv) :: a,c,s,rrad,t
real, dimension(nbniv-1,nbniv-1) :: q
real, dimension(nbniv-1) :: y
real, dimension(nbniv) :: pop,boltz
real :: eji,eij,fij,gaunt,te,Ne,x,exi1,vac,d,&
s0,s1,zmoy,rap,tex,aux,poptot,popi0,potion,lambda,zrad,deg,&
hnumin,hnumax,pas,hplanck,clum,celec, aij, eV,corr,grnd,poppy,poppy2
integer :: k,i,j,i0,N_noy,kion,nb_niv,ii,jj,i_CR,iraie,ios,val,choix,choix2
real, dimension(:,, allocatable :: mat
real, parameter :: ryd=13.605804
integer, dimension(nbniv-1) :: indx
real (kind (0D0)) :: tt,xx
character tex1*2,tex2*5,tex3*8,tex4*7,tex5*12
real, dimension(nfreq) :: hnu,em,londe,intens
J'ai une boucle de lecture de données de ce type :

i_CR=0 au début du programme puis = 119 avant cette boucle

! Lecture des donnees des energies:
open(15,file='Ar2_ener_D',form='formatted',status='unknown')
read(15,'(a2,i3,a5,i3,a8,f12.5,a7)')tex1,N_noy,tex2,&
kion,tex3,potion,tex4
read(15,'(i4)')nb_niv
do i=1,nb_niv
i_CR=i_CR+1
read(15,'(2i4,f15.8,f16.1,3i4)') ii,jj,ener(i_CR),g(i_CR),nlast(i_CR),llast(i_CR),nel_eq(i_CR)
print*,ii,jj,ener(i_CR),g(i_CR),nlast(i_CR),llast(i_CR),nel_eq(i_CR),i_CR
charge(i_CR)=1
pause
enddo
close(15)
Mon souci est que pour un fichier excédant 718 lignes (comme celui que je lis), mon incrément i_CR retombe à 6 ! C'est a dire qu'il compte ainsi 716 ... 717 ... 718 ... 6 ... 7 ...8 etc ... => Segmentation fault à la fin du programme

D'après mes tests, il semblerait que l'erreur vienne de la ligne de lecture en rouge, car l'incrément atteint bien 718 avant cette ligne mais tombe à 6 comme par magie après ...

La ligne incriminée dans mon programme est de ce type :

597 37-14341.39453125 8.0 7 5 1
598 37-14341.39453125 6.0 7 5 1
599 38-14341.39453125 10.0 7 6 1
600 38-14341.39355469 12.0 7 6 1
601 37-14341.39160156 14.0 7 5 1
Print*, nous donnant :

597 37 -14341.395 8. 7 5 1 716
PAUSE statement executed. Hit Return to continue

598 37 -14341.395 6. 7 5 1 717
PAUSE statement executed. Hit Return to continue

599 38 -14371.764 1.E-45 1 1 1 6

PAUSE statement executed. Hit Return to continue

600 38 -14341.394 12. 7 6 1 7
PAUSE statement executed. Hit Return to continue

601 37 -14341.392 14. 7 5 1 8
PAUSE statement executed. Hit Return to continue
Mon fichier étant suffisamment grand, j'ai pu constater que i_CR se réinitialisait tout seul a 6 a chaque fois qu'il atteint la valeur de 718 !

Quelqu'un voit il la raison de ce souci ? Problème de mémoire ?