mucpr2
C MUCPR2 SOURCE PV090527 25/02/19 21:15:03 12164 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 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 * pour les relations, on ne considere que la premiere ligne et colonne if (irela.eq.0) then 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 endif if(irela.eq.1) then * write(6,*) 'mucpr2 irela 1 inpl ',inpl xb1=0.d0 do inp=1,inpl xb1=xb1+re(inp,1)*xbuffp(inp) enddo xbuffd(1)=xb1 do ind=1,indl-1,1 xb1=re(1,ind+1)*xbuffp(1) xbuffd(ind+1)=xb1 enddo else 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 endif end
© Cast3M 2003 - Tous droits réservés.
Mentions légales