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 61 62 63
| program main
implicit none
integer :: ios_o, ios_m, nb_conc = 0
integer :: date_o, date_m
double precision :: conc_o, conc_m, somme = 0
open(unit=11, file='Observation.txt', status='old')
read(11,*) date_o, conc_o
open(unit=12, file='Model.txt', status='old')
read(12,*) date_m, conc_m
lect_obs : do
! Boucler tant que la date lue dans le fichier modele est
! inferieure a la date lue dans le fichier observation
lect_model : do
if (date_m >= date_o) exit lect_model
read(12,*,iostat=ios_m) date_m, conc_m
if (ios_m > 0) exit lect_obs ! Erreur
if (ios_m < 0) then ! Fin de fichier
print '(a/a/a)', repeat('-',70), &
'Toutes les valeurs du fichier modele ont ete traitees', &
'Valeurs fichier observation non traitees :'
do
read(11,*,iostat=ios_o) date_o, conc_o
if (ios_o/=0) exit lect_obs
print '(i10,e14.6)', date_o, conc_o
enddo
endif
enddo lect_model
! Date observation trouvée : ajout contribution
if (date_m == date_o) then
print '(i10,2e14.6)', date_o, conc_o, conc_m
somme = somme + conc_o - conc_m
nb_conc = nb_conc + 1
else
! Cas : date_m > date_o
print '(a,i10)', 'Le modele ne permet pas de traiter l''observation a : ', date_o
endif
! Lecture d'une nouvelle ligne dans le fichier observation
read(11,*,iostat=ios_o) date_o, conc_o
if (ios_o > 0) exit lect_obs ! Erreur
if (ios_o < 0) then ! Fin de fichier
print '(a/a/a)', repeat('-',70), &
'Toutes les valeurs du fichier observation ont ete traitees', &
'Valeurs fichier modele non traitees :'
do
read(12,*,iostat=ios_m) date_m, conc_m
if (ios_m/=0) exit lect_obs
print '(i10,e14.6)', date_m, conc_m
enddo
endif
enddo lect_obs
close(11) ; close(12)
print '(a/a,e14.6)', repeat('-',70), 'Biais : ', somme / dble(nb_conc)
end program main |
Partager