c*********************************************************************** program test_collision c test pour collision c Auteur: P.Morel, OCA c Observatoire de Nice c CESAM95 c------------------------------------------------------------------------ use mod_chim use mod_donnees use mod_kind implicit none real (kind=dp), parameter :: dx=1.d-5, unpdx=1.d0+dx real (kind=dp), allocatable, dimension(:,:,:) :: domega11, dzij, dzpij, 1 dzsij, domega10, dzi0, dzpi0, dzsi0 real (kind=dp), allocatable, dimension(:,:) :: mij, omega11, zij, zpij, 1 zsij, omega10, zi0, zpi0, zsi0 real (kind=dp), allocatable, dimension(:) :: zb, xi, ai real (kind=dp) :: stor, stor0, dstor, t, ro, ro0, drox=0.d0 integer, parameter :: nb=4 integer :: i, j, k c-------------------------------------------------------------------------- 2000 format(1x,8es10.3) 2001 format(1x,10es10.3) c pause c lecture de test.don nom_fich2='test' ; call lit_nl ; call ini_ctes_phys ; call print_ctes(6) allocate(xi(nb),ai(nb),zb(nb),mij(nb,nb),domega11(nb,nb,nb), 1 dzij(nb,nb,nb),dzpij(nb,nb,nb),dzsij(nb,nb,nb), 2 domega10(nb,nb,nb),dzi0(nb,nb,nb),dzpi0(nb,nb,nb), 3 dzsi0(nb,nb,nb),omega11(nb,nb),zij(nb,nb),zpij(nb,nb), 4 zsij(nb,nb),omega10(nb,nb),zi0(nb,nb),zpi0(nb,nb),zsi0(nb,nb)) ro0=.3d0 c ro0=1.d-10 !cas dilue c ro0=1.d2 !cas dense t=2.215D+06 xi(1)=7.383D-01 xi(2)=2.436D-01 xi(nb-1)=1.d0-sum(xi(1:nb-1)) ai(1)=ah ai(2)=ahe4 ai(nb-1)=26 zb(1)=1 !charges zb(2)=2 zb(nb-1)=13 xi(1:nb-1)=xi(1:nb-1)/ai(1:nb-1) zb(nb)=-1 ai(nb)=me/amu !electron do i=1,nb mij(i,:)=ai(i)*ai(:)/(ai(i)+ai(:)) mij(:,i)=mij(i,:) enddo print*,'zb' write(*,2000)zb print*,'xi' write(*,2000)xi print*,'ai' write(*,2000)ai print*,'mij' do i=1,nb write(*,2000)mij(i,:) enddo print* ro=ro0*xi(1) drox=ro0/ro call collision(nb,zb,mij,xi,ro,drox,t,omega10,zi0,zpi0,zsi0, 1 domega10,dzi0,dzpi0,dzsi0) print*,'collision om10,zi0,zpi0,zsi0' do i=1,nb do j=i,nb write(*,2000)omega10(i,j),zi0(i,j),zpi0(i,j),zsi0(i,j) enddo enddo do k=1,nb do i=1,nb print*,'derivee / x_k, k=',k,' i=',i write(*,2000)(domega10(i,j,k),dzi0(i,j,k),dzpi0(i,j,k), 1 dzsi0(i,j,k),j=1,nb) enddo enddo c test de derivation print* print*,'test de derivation' print* do k=1,nb stor0=xi(k) stor=stor0*unpdx if(stor == 0.d0)stor=dx xi(k)=stor dstor=stor-stor0 ro=ro0*xi(1) drox=ro0/ro call collision(nb,zb,mij,xi,ro,drox,t,omega11,zij,zpij,zsij, 1 domega11,dzij,dzpij,dzsij) do i=1,nb print*,'test derivee / x_k, k=',k,' i=',i write(*,2000)((omega11(i,j)-omega10(i,j))/dstor,domega10(i,j,k), 1 (zij(i,j)-zi0(i,j))/dstor,dzi0(i,j,k), 2 (zpij(i,j)-zpi0(i,j))/dstor,dzpi0(i,j,k), 3 (zsij(i,j)-zsi0(i,j))/dstor,dzsi0(i,j,k),j=1,nb) enddo xi(k)=stor0 pause enddo stop contains include 'collision.f' end program test_collision