Numérotation des lignes :

C ITGA21    SOURCE    CB215821  16/04/21    21:17:18     8920CCCC **********************************************************************CCC      SUBROUTINE INTEGRA21 (XTRI,X,NDIMX,LAM,DDEFPL,NDIMS,     .                    nmodel,tolrel,nitmax,nescri,ues,nnumer,     .                    deltax,kerre,iiter)      IMPLICIT INTEGER(I-N)       integer ndims,nmodel,nitmax,nescri,nnumer,ndimx,ues,kdummy      real*8    xtri(ndimx),x(ndimx),ddefpl(ndims),lam,tolrel      integer i,j,iiter,kerre,npcon,npcap,kdu,ndimv      real*8    dl,lres,siginv(3)      real*8    auxr1,vtLUiw,auxmax1,auxmax2,deltax      real*8    xres(8),dx(8),Amat(64),Gmat(64),vecn(8),vecm(8)       kerre=0      ndimv=2      npcon=ndims+1      npcap=ndims+2      kdummy=nmodel      if (nmodel.eq.22) kdummy=23      do i=1,8          xres(i)=0.D0          dx(i)=0.D0          vecn(i)=0.D0          vecm(i)=0.D0        enddo      do i=1,64          Amat(i)=0.D0          Gmat(i)=0.D0        enddo      dl=1.D0      iiter=-1      call MatGenHookinv(Gmat,ndimx,ndims)10    continue      iiter=iiter+1      kdu=0      call yielddMAC(x,ndims,x(npcon),ndimv,lres,kdummy)      call VecFlMAC(x,ndimx,vecm,nmodel)      do i=1,ndimx         xres(i)=lam*vecm(i)         do j=1,ndimx            xres(i)=xres(i)+Gmat((i-1)*ndimx+j)*(x(j)-xtri(j))         enddo      enddo      auxmax1=ABS(dx(1))      do i=2,ndims+1         if (ABS(dx(i)).gt.auxmax1) auxmax1=ABS(dx(i))      enddo      auxmax2=ABS(x(1))      do i=2,ndimx         if (ABS(x(i)).gt.auxmax2) auxmax2=ABS(x(i))      enddo        auxr1=max(auxmax1,ABS(dl))/max(auxmax2,ABS(lam))      if (iiter.eq.0) auxr1=1.D0      if (nescri.eq.1) then         call InvariantesPQT(x,ndims,siginv)         write(ues,998)iiter,(siginv(i),i=1,3),x(ndimx-1),     .                 x(ndimx),auxr1998      format(I3,'Sig ',3(E10.4,1x),'V ',E10.4,1x,E10.4,' L ',E10.4)      endif      if ((auxr1.lt.tolrel).or.     .   ((iiter.eq.nitmax).and.(auxr1.lt.sqrt(tolrel)))) thenc CONVERGIDO         do i=1,ndims            ddefpl(i)=0.D0            do j=1,ndims               ddefpl(i)=ddefpl(i)+Gmat((i-1)*ndimx+j)*(xtri(j)-x(j))            enddo         enddo         return      endifc NO CONVERGIDO      if (iiter.eq.nitmax) then         kerre=1         return      endif      call VecYiMAC(x,ndimx,vecn,nmodel)      call HessMAC(x,ndimx,Amat,ndimx,nnumer,deltax,nmodel)      do i=1,ndimx*ndimx         Amat(i)=Gmat(i)+lam*Amat(i)      enddo      call DescLU(Amat,ndimx)      dl=(lres-vtLUiw(vecn,Amat,xres,ndimx))     .         /vtLUiw(vecn,Amat,vecm,ndimx)      do i=1,ndimx         xres(i)=-xres(i)-dl*vecm(i)      enddo      call LUiw(Amat,xres,dx,ndimx)      lam=lam+dl      do i=1,ndimx         x(i)=x(i)+dx(i)      enddo      if (x(npcon).lt.0.D0) x(npcon)=0.D0      if (x(npcap).lt.0.D0) x(npcap)=0.D0      go to 10      end

© Cast3M 2003 - Tous droits réservés.
Mentions légales