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 64 65 66 67 68 69 70 71 72 73 74 75
|
program moyenne
implicit none
integer::nmax,jf,nf0,i,nfile,k,ntot
parameter(nmax=400000)
character(len=80),dimension(:),allocatable::fichier
character(len=100)::ligne
character(len=2)::num
double precision,dimension(1:nmax)::phi,tau,CA2,CG2
double precision,dimension(:),allocatable::phi0,rk1
double precision::phim,phisig,taum,tausig,CA2m,CA2sig,CG2m,CG2sig
open(10,file="bilan.in")
read(10,*)
read(10,*)nfile
allocate( fichier(1:nfile), phi0(1:nfile), rk1(1:nfile) )
Do i=1,nfile
read(10,"(a)")ligne
k=index(ligne," ")
read(ligne(:k+1),"(a)")fichier(i)
read(ligne(k+1:),*)phi0(i),rk1(i)
Enddo
read(10,*)nf0
close(10)
write(*,"(a)")"# phi0 phim phisig taum tausig CA2m CA2sig"
Do jf=1,nfile
call lecture(nfile,nf0,nmax,fichier(jf),ntot,phi,tau,CA2,CG2)
call stat(ntot,phi,phim,phisig)
write(*,"(9F10.3)") phi0(jf) , phim , phisig , &
taum , tausig , &
CA2m , CA2sig , &
CG2m , CG2sig
Enddo
end
! ==============================================================================
Subroutine stat(n,x,xm,xsig)
implicit none
integer,intent(in)::n
double precision,dimension(1:n),intent(in)::x
double precision,intent(out)::xm,xsig
integer::i
xm = sum( x(:) ) / dble( n )
xsig=0.d0
Do i=1,n
xsig = xsig + ( x(i) - xm )**2
Enddo
xsig = sqrt( xsig / dble(n) )
end
! ====================================================================
Subroutine lecture(nfile,nf0,nmax,nom,ntot,phi,tau,CA2,CG2)
implicit none
character(len=80),intent(in)::nom
integer,intent(in)::nmax,nfile,nf0
integer,intent(out)::ntot
double precision,dimension(1:nmax),intent(out)::phi,tau,CA2,CG2
integer::nsup,n,nr,isup,i
character(len=2)::num
double precision::bid
Ici je lis les données je pense c'est un bidouillage de lecture si ça manque je le rajouterai !
end |
Partager