mucpr2
C MUCPR2 SOURCE PV 20/03/29 21:15:07 10565 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * appele par mucpr1 REAL*8 re(indl,inpl),xbuffp(inpl),xbuffd(indl) * blocage par 6 puis par 3 puis par 2 pour reutiliser xbuffp * le blocage a 2 est suffisant en fait * les triangles ont 3 noeuds et 3 ou 6 inconnues par noeud ** write (6,*) 'isyme inpl indl',isyme,inpl,indl ** write (6,*) ((re(ind,inp),inp=1,inpl),ind=1,indl) indi=0 ** goto 2 ** do ind=0,indl-6,6 ** xb1=0.d0 ** xb2=0.d0 ** xb3=0.d0 ** xb4=0.d0 ** xb5=0.d0 ** xb6=0.d0 ** do inp=1,inpl ** xb1=xb1+xbuffp(inp)*re(ind+1,inp) ** xb2=xb2+xbuffp(inp)*re(ind+2,inp) ** xb3=xb3+xbuffp(inp)*re(ind+3,inp) ** xb4=xb4+xbuffp(inp)*re(ind+4,inp) ** xb5=xb5+xbuffp(inp)*re(ind+5,inp) ** xb6=xb6+xbuffp(inp)*re(ind+6,inp) ** enddo ** xbuffd(ind+1)=xb1 ** xbuffd(ind+2)=xb2 ** xbuffd(ind+3)=xb3 ** xbuffd(ind+4)=xb4 ** xbuffd(ind+5)=xb5 ** xbuffd(ind+6)=xb6 ** enddo ** indi=ind ** 3 continue ** do ind=indi,indl-3,3 ** xb1=0.d0 ** xb2=0.d0 ** xb3=0.d0 ** do inp=1,inpl ** xb1=xb1+xbuffp(inp)*re(ind+1,inp) ** xb2=xb2+xbuffp(inp)*re(ind+2,inp) ** xb3=xb3+xbuffp(inp)*re(ind+3,inp) ** enddo ** xbuffd(ind+1)=xb1 ** xbuffd(ind+2)=xb2 ** xbuffd(ind+3)=xb3 ** enddo ** indi=ind ** 2 continue if (isyme.ne.0) then * cas non symetrique do ind=indi,indl-2,2 xb1=0.d0 xb2=0.d0 do inp=1,inpl xbp=xbuffp(inp) xb1=xb1+re(ind+1,inp)*xbp xb2=xb2+re(ind+2,inp)*xbp enddo xbuffd(ind+1)=xb1 xbuffd(ind+2)=xb2 enddo indi=ind do ind=indi,indl-1,1 xb1=0.d0 do inp=1,inpl xb1=xb1+re(ind+1,inp)*xbuffp(inp) enddo xbuffd(ind+1)=xb1 enddo else * cas symetrique on utilise la transposee do ind=indi,indl-2,2 xb1=0.d0 xb2=0.d0 do inp=1,inpl xbp=xbuffp(inp) xb1=xb1+re(inp,ind+1)*xbp xb2=xb2+re(inp,ind+2)*xbp enddo xbuffd(ind+1)=xb1 xbuffd(ind+2)=xb2 enddo indi=ind do ind=indi,indl-1,1 xb1=0.d0 do inp=1,inpl xb1=xb1+re(inp,ind+1)*xbuffp(inp) enddo xbuffd(ind+1)=xb1 enddo endif end
© Cast3M 2003 - Tous droits réservés.
Mentions légales