C MULMAV SOURCE CHAT 05/01/13 01:55:26 5004 SUBROUTINE MULMAV(C1,C2,C3,C4,V,X,N,ICHLI,NLBLI,NBLI) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C C ===================================================================== C SOUS-PROGRAMME FORTRAN APPELE PAR ELFRES C CALCUL DE X ET F EN FONCTION DE V1 ET V2 EN RESOLVANT: C C ( A1 A2 ) (X1) (V1) C ( ) ( ) = ( ) C ( A3 A4 ) (X2) (V2) C C AVEC C1 MATRICE BANDE A1 C C -1 C C2 MATRICE BANDE A2 C -1 -1 -1 C C4 MATRICE (A3-A4*A2 *A1) *A4*A2 C -1 -1 C C3 MATRICE (A3-A4*A2 *A1) C C NLBLI : TABLEAU POUR L' UTILISATION DES MATRICES BANDES C C ICHLI : SI NUL V2 EST NUL (PAS DE CHARGEMENT SUR LA LIAISON) C C CREATION : 04/08/87 C PROGRAMMEUR : GUILBAUD C ===================================================================== C -INC CCOPTIO DIMENSION C1(*),C2(*),C3(N,1),C4(N,1),V(*),X(*),NLBLI(2,1),A(6), *B(6) C -1 -1 -1 C 1 - X1=-(A3-A4*A2 *A1) *A4*A2 V1 C DO 20 I=1,N BB=0.D0 DO 10 J=1,N BB=BB+C4(I,J)*V(J) 10 CONTINUE X(I)=-BB 20 CONTINUE C WRITE(IOIMP,*)' X1 ',X1 C WRITE(IOIMP,1000)(X(I),I=1,N) C -1 -1 C 2 - X1=X1-(A3-A4*A2 *A1) *V2 C IF(ICHLI.NE.0) THEN C WRITE(IOIMP,*)' CHARGEMENT ' DO 40 I=1,N BB=X(I) DO 30 J=1,N BB=BB+C3(I,J)*V(J+N) 30 CONTINUE X(I)=BB 40 CONTINUE C WRITE(IOIMP,1000)(X(I),I=1,N) ENDIF C -1 C 3 - X2=A2 *(V1-A1*X1) C NA=0 NB=0 DO 50 NBL =1,NBLI ND1=NLBLI(1,NBL) ND2=NLBLI(2,NBL) C WRITE(IOIMP,*) ' NBL ND1 ND2 ',NBL,ND1,ND2 IF(ND1.EQ.ND2) THEN ND = ND1 NX = ND+N X(NX+1)=C2(NB+1)*(V(ND+1)-C1(NA+1)*X(ND+1)) X(NX+2)=C2(NB+2)*(V(ND+2)-C1(NA+2)*X(ND+2)-C1(NA+3)*X(ND+6)) X(NX+3)=C2(NB+3)*(V(ND+3)-C1(NA+4)*X(ND+3)-C1(NA+5)*X(ND+5)) X(NX+4)=C2(NB+4)*(V(ND+4)-C1(NA+6)*X(ND+4)) X(NX+5)=C2(NB+5)*(V(ND+5)-C1(NA+7)*X(ND+3)-C1(NA+8)*X(ND+5)) X(NX+6)=C2(NB+6)*(V(ND+6)-C1(NA+9)*X(ND+2)-C1(NA+10)*X(ND+6)) C WRITE(IOIMP,*) 'C2 NB ',NB C WRITE(IOIMP,1000)(C2(NB+I),I=1,6) C1000 FORMAT(12(1X,1PE10.3)) C WRITE(IOIMP,*) 'C1 NA ',NA C WRITE(IOIMP,1000)(C1(NA+I),I=1,10) C WRITE(IOIMP,*) 'V ND ',ND C WRITE(IOIMP,1000)(V(ND+I),I=1,6) C WRITE(IOIMP,*) 'X NX ',NX C WRITE(IOIMP,1000)(X(NX+I),I=1,6) NA =NA+10 NB = NB+6 ELSE NX1 = ND1+N NX2 = ND2+N X(NX1+1)=V(ND1+1)-C1(NA+ 1)*X(ND1+1)-C1(NA+11)*X(ND2+1) X(NX1+2)=V(ND1+2)-C1(NA+ 2)*X(ND1+2)-C1(NA+ 3)*X(ND1+6) * -C1(NA+12)*X(ND2+2)-C1(NA+13)*X(ND2+6) X(NX1+3)=V(ND1+3)-C1(NA+ 4)*X(ND1+3)-C1(NA+ 5)*X(ND1+5) * -C1(NA+14)*X(ND2+3)-C1(NA+15)*X(ND2+5) X(NX1+4)=V(ND1+4)-C1(NA+ 6)*X(ND1+4)-C1(NA+16)*X(ND2+4) X(NX1+5)=V(ND1+5)-C1(NA+ 7)*X(ND1+3)-C1(NA+ 8)*X(ND1+5) * -C1(NA+17)*X(ND2+3)-C1(NA+18)*X(ND2+5) X(NX1+6)=V(ND1+6)-C1(NA+ 9)*X(ND1+2)-C1(NA+10)*X(ND1+6) * -C1(NA+19)*X(ND2+2)-C1(NA+20)*X(ND2+6) X(NX2+1)=V(ND2+1)-C1(NA+21)*X(ND1+1)-C1(NA+31)*X(ND2+1) X(NX2+2)=V(ND2+2)-C1(NA+22)*X(ND1+2)-C1(NA+23)*X(ND1+6) * -C1(NA+32)*X(ND2+2)-C1(NA+33)*X(ND2+6) X(NX2+3)=V(ND2+3)-C1(NA+24)*X(ND1+3)-C1(NA+25)*X(ND1+5) * -C1(NA+34)*X(ND2+3)-C1(NA+35)*X(ND2+5) X(NX2+4)=V(ND2+4)-C1(NA+26)*X(ND1+4)-C1(NA+36)*X(ND2+4) X(NX2+5)=V(ND2+5)-C1(NA+27)*X(ND1+3)-C1(NA+28)*X(ND1+5) * -C1(NA+37)*X(ND2+3)-C1(NA+38)*X(ND2+5) X(NX2+6)=V(ND2+6)-C1(NA+29)*X(ND1+2)-C1(NA+30)*X(ND1+6) * -C1(NA+39)*X(ND2+2)-C1(NA+40)*X(ND2+6) C C WRITE(IOIMP,*) ' NBL ',NBL C WRITE(IOIMP,1000) (X(NX1+I),I=1,6),(X(NX2+I),I=1,6) A(1)=C2(NB+ 1)*X(NX1+1)+C2(NB+11)*X(NX2+1) A(2)=C2(NB+ 2)*X(NX1+2)+C2(NB+ 3)*X(NX1+6) * +C2(NB+12)*X(NX2+2)+C2(NB+13)*X(NX2+6) A(3)=C2(NB+ 4)*X(NX1+3)+C2(NB+ 5)*X(NX1+5) * +C2(NB+14)*X(NX2+3)+C2(NB+15)*X(NX2+5) A(4)=C2(NB+ 6)*X(NX1+4)+C2(NB+16)*X(NX2+4) A(5)=C2(NB+ 7)*X(NX1+3)+C2(NB+ 8)*X(NX1+5) * +C2(NB+17)*X(NX2+3)+C2(NB+18)*X(NX2+5) A(6)=C2(NB+ 9)*X(NX1+2)+C2(NB+10)*X(NX1+6) * +C2(NB+19)*X(NX2+2)+C2(NB+20)*X(NX2+6) B(1)=C2(NB+21)*X(NX1+1)+C2(NB+31)*X(NX2+1) B(2)=C2(NB+22)*X(NX1+2)+C2(NB+23)*X(NX1+6) * +C2(NB+32)*X(NX2+2)+C2(NB+33)*X(NX2+6) B(3)=C2(NB+24)*X(NX1+3)+C2(NB+25)*X(NX1+5) * +C2(NB+34)*X(NX2+3)+C2(NB+35)*X(NX2+5) B(4)=C2(NB+26)*X(NX1+4)+C2(NB+36)*X(NX2+4) B(5)=C2(NB+27)*X(NX1+3)+C2(NB+28)*X(NX1+5) * +C2(NB+37)*X(NX2+3)+C2(NB+38)*X(NX2+5) B(6)=C2(NB+29)*X(NX1+2)+C2(NB+30)*X(NX1+6) * +C2(NB+39)*X(NX2+2)+C2(NB+40)*X(NX2+6) DO 45 I=1,6 X(NX1+I)=A(I) X(NX2+I)=B(I) 45 CONTINUE C WRITE(IOIMP,1000)(X(NX1+I),I=1,6),(X(NX2+I),I=1,6) NA=NA+40 NB=NB+40 ENDIF 50 CONTINUE RETURN END