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:
Je voudrais calculer la valeur maximum de valeur absolue de la colonne 3 du fichier maps00000iL1 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
et puis écrire les lignes corespondant à ces valeurs dans un fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part maximum = max (abs (maps00000i(L3( : ))))
Il me faut écrire L1, L2, maximum dans un fichier.
Dans cet exemple : c'estdans un fichier. Je ne suis pas arrivé à écrire des valeurs L1, L2 correspondant à valeur maximum.0.0000000E+00 0.8000000E+02 0.1879126E-1
Voici mon code :
Est-ce que quelqu'un connaît ou a d'autres solutions à ce problème ?
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
Merci par avance,
Chip
Partager