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 35 36 37 38 39 40 41 42 43
|
program lit
implicit none
real(kind=8),dimension(:,:),allocatable ::node
integer,dimension(:),allocatable :: relatif
integer i,Nligne,ios
open(unit=10,file="mailage.txt",status="old",position="rewind")
i=0
!on saute la première ligne
read(10,*)
do while(ios==0)
read(unit=10,fmt=*,iostat=ios)
if (ios==0) i=i+1
end do
!on connait maintenant le nombre de noeud
Nligne=i
!on se repositionne sur la seconde ligne
rewind(10)
read(10,*)
!on alloue notre tableau de noeud:
! (Nombre de noeuds,Dimenssion)
allocate( node(Nligne,3))
allocate( relatif(Nligne) )
!on le remplit:
do i=1,Nligne
read(10,*)relatif(i),node(i,1),node(i,2),node(i,3)
end do
!on a plus besoin du fichier
close(10)
!============================================
! à ce moment, node contient les coordonnées des noeuds
! et relatif contient leur numéro.
! dans l'exemple, relatif(i)=i mais ce n'est pas toujours
! le cas, c'est la différence entre la numérotation absolue
! et relative... ce tableau permet la conversion!
!===============================================
!on vérifie qu'on a bien lu:
do i=1,Nligne
write(*,*)relatif(i),node(i,1),node(i,2),node(i,3)
end do
end program lit |
Partager