C PRITE1 SOURCE BECC 09/11/18 21:15:09 6542 subroutine prite1(ncoef,Tmaxcv,acvtot,ether,t0,t,lognc,logipg) c integer i1, itmax, iter, ncoef real*8 Tmaxcv, acvtot(1:ncoef+1), t0, t, ether, et0, deret0 & , epsi, puit, t1, t2, atot, dt, den parameter(epsi=1.0d-12,itmax=100) logical lognc, logcon, logipg C C See conthe.eso C logcon = .true. c c*** lognc, logipg deja initialize c t1 = t0 iter = 0 do while(logcon) C t2 = min (t1, Tmaxcv) t2 = 0.5d0 * ((t1 + Tmaxcv) - abs (t1 - Tmaxcv)) deret0 = acvtot(1) et0 = deret0 * t2 puit = 1.0d0 do i1 = 2, ncoef+1, 1 puit = puit * t2 atot = acvtot(i1) * puit deret0 = deret0 + atot atot = atot * t2 / i1 et0 = et0 + atot enddo C t2 = max ((t1 - Tmaxcv),0) C t2 = 0.5d0 * ((t1 - Tmaxcv) + abs (t1 - Tmaxcv)) et0 = et0 + (deret0 * t2) c c******* anomalie si deret0 < 0 c n.b. deret0 = cvtot c if(deret0 .le. 0.0d0)then logipg = .true. goto 9999 endif den = ether - et0 dt = den / deret0 if((abs(dt) .le. (epsi * t1)) .and. & (abs(den) .le. (epsi * et0)))then logcon = .false. t = t1 + dt elseif(iter .gt. itmax)then lognc = .true. logcon = .false. t = t1 + dt else t1 = t1 + dt iter = iter + 1 endif enddo c c**** visualisation des iterations c on peut voir que la methode est tres efficace (3,4) c write(*,*) iter 9999 continue return end