C MAPAEX SOURCE CHAT 05/01/13 01:30:34 5004 C MAPAEX SOURCE DJ 93/01/12 21:20:55 781 SUBROUTINE MAPAEX(XE,NBNN,WORK,AL,TGL,LRE,KERRE) C======================================================================= C RECHERCHE DU REPERE LOCAL DE BAEX ( barre 3D excentre) C======================================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) DIMENSION XE(3,NBNN),B(3,3),TGL(2,LRE),WORK(6) * --------------------------------------------------- EXCZ=WORK(2) EXCY=WORK(3) VX3P=WORK(4) VY3P=WORK(5) VZ3P=WORK(6) C DO 13 I=1,2 DO 13 J=1,LRE TGL(I,J)=0.D0 13 CONTINUE C VX1=XE(1,2)-XE(1,1) VY1=XE(2,2)-XE(2,1) VZ1=XE(3,2)-XE(3,1) VL1=DSQRT(VX1*VX1+VY1*VY1+VZ1*VZ1) AL=VL1 C KERRE=0 IF(AL.EQ.0.D0) THEN KERRE=1 GO TO 999 ENDIF C VX2=VY3P*VZ1-VY1*VZ3P VY2=VX1*VZ3P-VX3P*VZ1 VZ2=VX3P*VY1-VX1*VY3P VL2=DSQRT(VX2*VX2+VY2*VY2+VZ2*VZ2) C B(1,1)=VX1/VL1 B(1,2)=VY1/VL1 B(1,3)=VZ1/VL1 B(2,1)=VX2/VL2 B(2,2)=VY2/VL2 B(2,3)=VZ2/VL2 B(3,1)=B(1,2)*B(2,3)-B(2,2)*B(1,3) B(3,2)=B(2,1)*B(1,3)-B(1,1)*B(2,3) B(3,3)=B(1,1)*B(2,2)-B(2,1)*B(1,2) C LIB=6 C DO 20 I=1,2 DO 10 J=1,3 L1=(I-1)*LIB+J TGL(I,L1)=B(1,J) IF(LIB.EQ.6) THEN L2=I*LIB-2 L3=I*LIB-1 L4=I*LIB TGL(I,L2)= B(2,1)*EXCZ TGL(I,L3)= B(2,2)*EXCZ TGL(I,L4)= B(2,3)*EXCZ ELSE L2=I*LIB-1 L3=I*LIB TGL(I,L2)= B(2,1)*EXCZ TGL(I,L3)= B(2,2)*EXCZ ENDIF 10 CONTINUE 20 CONTINUE 999 CONTINUE C * WRITE(*,*) ' matrice B elem =',IB * WRITE(*,1190) ((B(IA,IC),IA=1,3),IC=1,3) * WRITE(*,*) ' XGENE passage' * DO 110 I =1,2 * WRITE(*,1199) (TGL(I,IC),IC=1,LRE) * 110 CONTINUE *1190 FORMAT(3(3(2X,E10.4),/)) *1199 FORMAT(12(1X,E8.2)) RETURN END