Bonjour,

J'ai des répertoires : a_01, a_02 ....a_n, dans des répertoires a_i, i=1,n; ils contiennent des fichiers : maps000001, maps000002, ...., maps00000n, i=1,n.
Chaque fichier maps00000i: est un tableau de 3 colonne et m lignes.

Exemple :
a_01: maps000001, maps000002,
dans maps000001:
L1 L2 L3
0.0000000E+00 0.9000000E+02 -0.3228331E+5
0.0000000E+00 0.8800000E+02 -0.1468246E-14
0.0000000E+00 0.8600000E+02 0.1261635E-12
0.0000000E+00 0.8400000E+02 0.3256342E-14
0.0000000E+00 0.8200000E+02 0.3353514E-15
0.0000000E+00 0.8000000E+02 - 0.1879126E-1
0.0000000E+00 0.7800000E+02 0.2759277E-15
0.0000000E+00 0.7600000E+02 -0.2333509E-13
0.0000000E+00 0.7400000E+02 0.2687527E-15
0.0000000E+00 0.7200000E+02 0.5729601E-15
Je voudrais calculer la valeur maximum de valeur absolue de la colonne 3 du fichier maps00000i
Code : Sélectionner tout - Visualiser dans une fenêtre à part
maximum = max (abs (maps00000i(L3( : ))))
et puis écrire les lignes corespondant à ces valeurs dans un fichier.

Il me faut écrire L1, L2, maximum dans un fichier.
Dans cet exemple : c'est
0.0000000E+00 0.8000000E+02 0.1879126E-1
dans un fichier. Je ne suis pas arrivé à écrire des valeurs L1, L2 correspondant à valeur maximum.

Voici mon code :
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
program maxxi_map
  implicit none
 
! Declaration
  character(len=4)      :: map="maps"
  character(len=9)      :: some_maps
  character(len=2)      :: nd
  character(len=6)      :: nf
  character(len=2)      :: Fa="a_"
  character(len=9)      :: map_sorti="map_stack"
  integer               :: i,j,k,nmax,mmax,ncol,nlign, n, m
  real, allocatable     :: l1(:), l2(:), l3(:), l4(:)
  real                  :: tr,maxxi
 
 
  print*,"enter value of maps nmax"
  read*,nmax
  print*, "enter value of repertoire  mmax"
  read*,mmax
! arrays' size with the first file
 nlign = 0
open(10,file="a_01"//"/maps000001",status="old",action="read")
 do
   read(10,*,end=40) tr,tr,tr
   nlign = nlign+1
  end do
40  close(10)
write(*,*) nlign," lines read"
 
! allocations
 allocate(l1(nlign),l2(nlign),l3(nlign),l4(nlign) )
 
 
!! boucle
  Do m=1,mmax
     write(nd,"(i2.2)")m
         do n=1,nmax
           write(nf,"(i6.6)")n
              open(10, file="a_"//nd//"/maps"//nf,status="old",action="read")
                     do j = 1,nlign
                       read(10,*) l1(j),l2(j),l3(j)
                          l4(j) = abs (l3(j))
                     end do
                    maxxi = maxval(l4 (:), dim=1)
                    print*,'valeur point maxi',l1,l2,maxxi
              close(10)
         end do
 
             open(20,file="map_stack"//"/maps"//nf,action="write",status="replace")
             do k = 1,nlign
                write(20,"(e14.7,1x,e14.7,1x,e14.7)") l1(k),l2(k),maxxi
             end do
  end do
         close(20)
 
! Deallocations
deallocate(l1,l2,l3,l4)
 
end program maxxi_map
Est-ce que quelqu'un connaît ou a d'autres solutions à ce problème ?

Merci par avance,

Chip