program comparison implicit none include 'max.inc' include 'formats.inc' integer nk1,nk2,i,nk_ref,nk_ti,kf,nd double precision nu1(1:Npmx) double precision nu2(1:Npmx) double precision k1(1:Npmx) double precision k2(1:Npmx) double precision nu_ref(1:Npmx) double precision k_ref(1:Npmx) double precision nu_ti(1:Npmx) double precision k_ti(1:Npmx) double precision k_i(1:Npmx) character*100 kfile1,kfile2 double precision diff_max,diff parameter(diff_max=0.2) ! pourcentage de différence max c Lecture des fichiers contenant les tableaux nu et k kfile1='./Venus/k006_0.01_HITRAN' call read_nuk(kfile1,nu1,k1,nk1) kfile2='./Venus/k006_0.01_CDSDv' call read_nuk(kfile2,nu2,k2,nk2) c Remise en ordre: nu_ref et k_ref doivent contenir les tableaux les c plus grands (maillage de référence), nu_ti et k_ti doivent contenir c les autres (tableaux contenant le moins de points) write(*,*) 'ordering arrays...' if (nk1.gt.nk2) then nk_ref=nk1 do i=1,nk1 nu_ref(i)=nu1(i) k_ref(i)=k1(i) enddo nk_ti=nk2 do i=1,nk2 nu_ti(i)=nu2(i) k_ti(i)=k2(i) enddo else nk_ref=nk2 do i=1,nk2 nu_ref(i)=nu2(i) k_ref(i)=k2(i) enddo nk_ti=nk1 do i=1,nk1 nu_ti(i)=nu1(i) k_ti(i)=k1(i) enddo endif write(*,*) '...done' c Interpolation des résultats k_ti sur le maillage nu_ref write(*,*) 'computing differences...' nd=0 open(12,file='./differences.txt') do i=1,nk_ref call interp(nk_ti,nu_ti,k_ti,nu_ref(i),kf,k_i(i)) if (kf.eq.1) then diff=dabs(k_i(i)-k_ref(i))/k_ref(i) if (diff.ge.diff_max) then nd=nd+1 write(12,50) nu_ref(i),k_ref(i),k_i(i),diff endif endif ! kf enddo ! i if (nd.eq.0) then write(12,*) 'No differences found' endif close(12) write(*,*) '...done' end