C MAPAEX    SOURCE    BL174031  17/08/01    21:15:01     9523           
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=SQRT(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=SQRT(VX2*VX2+VY2*VY2+VZ2*VZ2)
C
*     correction 1 BL : passage au repere local seg2
      B(1,1)=VX1/VL1
      B(1,2)=VY1/VL1
      B(1,3)=VZ1/VL1
      B(3,1)=-1*VX2/VL2
      B(3,2)=-1*VY2/VL2
      B(3,3)=-1*VZ2/VL2
      B(2,1)=B(3,2)*B(1,3)-B(1,2)*B(3,3)
      B(2,2)=B(1,1)*B(3,3)-B(3,1)*B(1,3)
      B(2,3)=B(3,1)*B(1,2)-B(1,1)*B(3,2)
*     fin correction 1 BL
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
*     correction 2 BL : prise en compte des 2 excentrements
        TGL(I,L2)= B(2,1)*EXCZ-B(3,1)*EXCY
        TGL(I,L3)= B(2,2)*EXCZ-B(3,2)*EXCY
        TGL(I,L4)= B(2,3)*EXCZ-B(3,3)*EXCY
*     fin correction 2 BL 
      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(*,*) ' ======================== calcul TGL ds mapaex '
*      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
      
 
 
 
