!********************************************************************** subroutine integre_tt5(m,n,s,dros,ndis,idisc,s2,tt2,s4,tt4, & & s6,tt6,s8,tt8) ! Version: 12/08/2003 ! Integration de tt2, tt4, tt6, tt8 ! Entrees: ! m: ordre des splines pour l'integration par INTEGRE ! n: nombre de points ! s(n): tableau des rayons ! dros(n): dro/ds ! ndis: nombre de discontinuites (dont la surface) ! idisc(ndis): position des discontinuites ! s2(n),s4(n),s6(n),s8(n) ! Sorties: ! tt2(n),tt4(n),tt6(n),tt8(n): cf Zarkhov, Trubitsyn (S'(beta)) implicit none include './cepam.inc' integer pn_d,pn_dd parameter (pn_d=pn+pn_noy+pndis,pn_dd=pn+pn_noy) integer m,n,ndis,idisc(ndis) real*8 s(n),dros(n),s2(n),tt2(n),s4(n),tt4(n),s6(n),tt6(n), & & s8(n),tt8(n) integer i,nn,imax,j,h real*8 s_crois(pn_dd),u(pn_d,4),v(pn_dd,4),ssd(4), & & sss(pn_dd),ss(pn_d,4) real*8 g2,x2,g4,x4,g6,x6,g8,x8 g2(x2,x4)=3/5.d0*(x2-1/7.d0*x2**2+12/35.d0*x2**3-2/7.d0*x2*x4 & & -17/165.d0*x2**4-50/693*x4**2+12/77.d0*x2**2*x4) g4(x2,x4,x6)=1/3.d0*(x4-27/35.d0*x2**2-60/77.d0*x2*x4 & & +216/385.d0*x2**3+13737/5005.d0*x2**2*x4 & & -38394./25025.d0*x2**4-243/1001.d0*x4**2-135/143.d0*x2*x6) g6(x2,x4,x6)=3/13.d0*(x6-25/11.d0*x2*x4+90/77.d0*x2**3 & & -50/99.d0*x4**2-14/11.d0*x2*x6+270/77.d0*x2**2*x4 & & -18/11.d0*x2**4) g8(x2,x4,x6,x8)=3/17.d0*(x8-1715/1287.d0*x4**2-196/65.d0*x2*x6 & & +784/143.d0*x2**2*x4-1512/715.d0*x2**4) !...........S.............A...........V..............E.................. save !----------------------------------------------------------------------- do i=1,n-1 u(i,1)=g2(s2(i),s4(i))*dros(i) u(i,2)=g4(s2(i),s4(i),s6(i))/s(i)**2*dros(i) u(i,3)=g6(s2(i),s4(i),s6(i))/s(i)**4*dros(i) u(i,4)=g8(s2(i),s4(i),s6(i),s8(i))/s(i)**6*dros(i) enddo u(n,1)=g2(s2(n),s4(n))*dros(n) u(n,2)=g4(s2(n),s4(n),s6(n))/(s(n-1)/10.d0)**2*dros(n) u(n,3)=g6(s2(n),s4(n),s6(n))/(s(n-1)/10.d0)**4*dros(n) u(n,4)=g8(s2(n),s4(n),s6(n),s8(n))/(s(n-1)/10.d0)**6*dros(n) do h=1,4 ssd(h)=0.d0 enddo ! Renversement des fonctions et integration entre les discontinuites do j=1,ndis if (j.eq.ndis) then imax=n else imax=idisc(j+1)-1 endif do i=idisc(j),imax do h=1,4 v(i-idisc(j)+1,h)=u(i,h) enddo s_crois(i-idisc(j)+1)=-s(i) enddo nn=imax-idisc(j)+1 do h=1,4 call integre(m,nn,0,s_crois,v(1,h),.false.,0.d0,0.d0,sss) do i=1,nn ss(i+idisc(j)-1,h)=sss(i)+ssd(h) enddo ssd(h)=ss(imax,h) enddo enddo do i=1,n tt2(i)=ss(i,1) tt4(i)=ss(i,2) tt6(i)=ss(i,3) tt8(i)=ss(i,4) enddo ! open(unit=22,file='bid1.dat',status='unknown') ! write(22,222)ndis,(idisc(i),i=1,5) ! do i=1,n ! write(22,223)i,s(i),tt2(i),tt4(i),tt6(i),tt8(i) ! enddo ! 222 format(1x,'ndis=',i4,/,1x,'idisc=',5(1x,i4),/) ! 223 format(1x,i3,1x,6(1pd12.5)) ! close(22) ! pause'INTEGRE_TT: pause' return end