C RGLOB     SOURCE    OF166741  23/11/13    21:15:03     11783          

      SUBROUTINE RGLOB(VALVEC,IDIM,TXR,XLOC,XGLOB,IFOUR)

C=======================================================================
C
C    CALCUL DES COS.DIR. DES AXES D'ORTHO./AXES GLOBAUXC  ENTREES
C
C  ENTREES  :
C
C   VALVEC = TABLEAU DES COS.DIR. DES AXES D'ORTHO./AXES LOCAUX
C   IDIM   = DEFINI SI ON EST EN 2D OU 3D
C   TXR    = COS-DIRECTEURS DES AXES LOCAUX / REPERE GLOBAL
C   XLOC   = TABLEAU DE TRAVAIL
C
C  SORITES
C
C   XGLOB  = TABLEAU DES COS.DIR. DES AXES D'ORTHO./AXES GLOBAUX
C
C=======================================================================
C
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
C
C TXR(IDIM,IDIM), XLOC(3,3), XGLOB(3,3)
      DIMENSION VALVEC(*),TXR(IDIM,*),XLOC(3,*),XGLOB(3,*)
C
      CALL ZERO(XGLOB,3,3)
C
      IF(IDIM.EQ.2.AND.IFOUR.NE.1) THEN
         IDIM2=2
         XLOC(1,1)=VALVEC(1)
         XLOC(2,1)=VALVEC(2)
         XLOC(1,2)=-XLOC(2,1)
         XLOC(2,2)=XLOC(1,1)
         XN=XLOC(1,1)*XLOC(1,1)+XLOC(2,1)*XLOC(2,1)
         IF(XN.EQ.0.D0)THEN
           CALL ERREUR(277)
           RETURN
         ENDIF
      ELSE
         IDIM2=3
         XLOC(1,1)=VALVEC(1)
         XLOC(2,1)=VALVEC(2)
         XLOC(3,1)=VALVEC(3)
         XLOC(1,2)=VALVEC(4)
         XLOC(2,2)=VALVEC(5)
         XLOC(3,2)=VALVEC(6)
         CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)
         IF(IRR.EQ.0)THEN
           CALL ERREUR(277)
           RETURN
         ENDIF
      ENDIF
C
C  DEFINITION DES AXES ORTHO./AXES GLOBAUX
C
      DO K=1,IDIM2
        DO J=1,IDIM
          DO I=1,IDIM
            XGLOB(J,K)=TXR(J,I)*XLOC(I,K)+XGLOB(J,K)
          ENDDO
        ENDDO
      ENDDO
      IF (IFOUR.EQ.1) THEN
        XGLOB(3,1)=XLOC(3,1)
        XGLOB(3,2)=XLOC(3,2)
        XGLOB(3,3)=XLOC(3,3)        
      ENDIF
       
C      RETURN
      END

 
