Bonsoir,
J'ai un problème que je ne sais pas comment résoudre.
J'ai des répertoires, par exemple a_01, a_02, a_m, dans lesquels il y a des fichiers (map_i, i=1,n), par exemple map_01.
m = 100 par exemple.a_01/map_01
a_01/map_02
........
a_01/map_n
a_02/map_01
a_02/map_02
........
a_02/map_n
................
a_m/map_01
a_m/map_02
........
a_m/map_n
n=100
Je voudrais calculer la somme de troisième colonne du fichier map_i comme :
Mais je ne sais pas comment il faut l'écrire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Somme_map01 = a_1/map_01(:,3) + ....+ a_m/map_01(:,3)/m ........ Somme_mapn = a_1/map_n(:,3) + ....+ a_m/map_n(:,3)/m
J'ai écrit un petit script pour calculer map_1, ça n'a pas marché :
Est-ce qu'il a quelqu'un entre vous qui sache écrire un script pour calculer ça ?
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 program stack_map implicit none character(len=6),parameter :: filebase = "map_01" character(len=2),parameter::fileb= "a_" character(len=4) :: filen integer :: i,j,k,nmax,ncol,nlign real, allocatable :: l1(:),l2(:),l3(:) real :: so,tr nmax=2 ncol = 3 ! arrays' size with the first file nlign = 0 open(10,file='(a_01,/map_01)',status="old",action="read",err=50) 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)) l3 = 0d0 ! loop over files do i = 1,nmax write(filename,'(a6 )') filebase print*,filename write(filen,'(a4, i2.2)') fileb,i print*,filen open(10,file='(filen,/filebase)',status="old",action="read",err=50) do j = 1,nlign read(10,*) l1(j),l2(j),so l3(j) = l3(j)+so end do close(10) end do ! output writing open(10,file="map_01",action="write",status="replace") do k = 1,nlign write(10,"(e14.7,1x,e14.7,1x,e14.7)") l1(k),l2(k),l3(k)/nmax end do close(10) ! deallocations deallocate(l1,l2,l3) stop 50 write(*,*) "Problem with maps_file opening" end program stack_map
Merci par avance !
Chip.
ps: voici file map_01
map_01 :
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 0.0000000E+00 0.9000000E+02 0.5350650E-14 0.0000000E+00 0.8800000E+02 0.7821857E-14 0.0000000E+00 0.8600000E+02 0.6425261E-14 0.0000000E+00 0.8400000E+02 0.7732323E-15 0.0000000E+00 0.8200000E+02 -0.6627371E-14 0.0000000E+00 0.8000000E+02 -0.1164896E-13 0.0000000E+00 0.7800000E+02 -0.1116324E-13 0.0000000E+00 0.7600000E+02 -0.5363244E-14 0.0000000E+00 0.7400000E+02 0.2168637E-14 0.0000000E+00 0.7200000E+02 0.7061946E-14 0.0000000E+00 0.7000000E+02 0.7381278E-14 0.0000000E+00 0.6800000E+02 0.4624598E-14 0.0000000E+00 0.6600000E+02 0.1734737E-14 0.0000000E+00 0.6400000E+02 0.2951203E-15 0.0000000E+00 0.6200000E+02 -0.3193952E-15 0.0000000E+00 0.6000000E+02 -0.1385939E-14 0.0000000E+00 0.5800000E+02 -0.2966076E-14 0.0000000E+00 0.5600000E+02 -0.3827051E-14 0.0000000E+00 0.5400000E+02 -0.2999837E-14 0.0000000E+00 0.5200000E+02 -0.1036623E-14 0.0000000E+00 0.5000000E+02 0.4138451E-15 0.0000000E+00 0.4800000E+02 0.1211175E-15 0.0000000E+00 0.4600000E+02 -0.1775308E-14 0.0000000E+00 0.4400000E+02 -0.4183586E-14 0.0000000E+00 0.4200000E+02 -0.6117263E-14 0.0000000E+00 0.4000000E+02 -0.7207045E-14 0.0000000E+00 0.3800000E+02 -0.7390039E-14 0.0000000E+00 0.3600000E+02 -0.6502176E-14 0.0000000E+00 0.3400000E+02 -0.4431441E-14 0.0000000E+00 0.3200000E+02 -0.1605575E-14 0.0000000E+00 0.3000000E+02 0.9345648E-15 0.0000000E+00 0.2800000E+02 0.2169372E-14 0.0000000E+00 0.2600000E+02 0.1893632E-14 0.0000000E+00 0.2400000E+02 0.8803067E-15 0.0000000E+00 0.2200000E+02 0.2339361E-15 0.0000000E+00 0.2000000E+02 0.5239074E-15 0.0000000E+00 0.1800000E+02 0.1440299E-14 0.0000000E+00 0.1600000E+02 0.2173178E-14 0.0000000E+00 0.1400000E+02 0.2090281E-14 0.0000000E+00 0.1200000E+02 0.1165362E-14 0.0000000E+00 0.1000000E+02 -0.3475502E-16 0.0000000E+00 0.8000000E+01 -0.6570897E-15 0.0000000E+00 0.6000000E+01 0.3553053E-17 0.0000000E+00 0.4000000E+01 0.2034712E-14 0.0000000E+00 0.2000000E+01 0.4626023E-14
Partager