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
|
open (8, file=filename, status='old')
! Lecture des donnees
read(8,*) nbsrc
do i=1,inbsrc
read(8,*) idum,idum,idum,Nparts(i)
enddo
C=0
do s=1,inbsrc
allocate(X(Nparts(s)))
allocate(Y(Nparts(s)))
allocate(Z(Nparts(s)))
allocate(Zdum(Nparts(s)))
allocate(Mass(Nparts(s)))
quot=Nparts(s)*(2*PI*Hx*Hy*Hz)**(0.5*esp)
do k=1, Nparts(s)
read(8,*) X(k), Y(k), Z(k), Zdum(k), Mass(k) ! lecture des donnees des particules
end do
! Appel de la subroutine
do k = 1, R
do j = 1,Q
do i = 1,M
call estimdens(X,Y,Z,Nparts(s),Gx(i,j,k),Gy(i,j,k),Gz(i,j,k), &
F(i,j,k),Hx,Hy,Hz,Fp(i,j,k))
F(i,j,k) = F(i,j,k)/quot
Fp(i,j,k) = Fp(i,j,k)/quot
end do
end do
end do
! Calcul
do l=1,Nparts(s)
C(:,:,:,s)=C(:,:,:,s)+Mass(l)*(F(:,:,:)+Fp(:,:,:))/(Hx*Hy*Hz)
enddo
! desallocations
if(allocated(X)) deallocate(X)
if(allocated(Y)) deallocate(Y)
if(allocated(Z)) deallocate(Z)
if(allocated(Zdum)) deallocate(Zdum)
if(allocated(Mass)) deallocate(Mass)
enddo
close (8)
open(10,file='concentrations.general')
do k = 1,R
do j=1,Q
do i = 1,M
write(10,*) Gx(i,j,k), Gy(i,j,k), Gz(i,j,k), C(i,j,k,1)
end do
end do
end do
close(10) |
Partager