C TRANSG    SOURCE    CB215821  26/08/24    21:18:41     12622          
      SUBROUTINE TRANSG(VKE,B,LRE,NBNO,ICOM)
C=====================================================
C
C     TRANSFORME VKE(LRE,LRE) DU REPERE LOCAL VKE ANTISYMETRIQUE
C     VKE = CORIOLIS
C     AU REPERE GENERAL A L AIDE DE LA MATRICE DE PASSAGE
C     B(3,3)
C     NBNO NOMBRE DE NOEUDS DE L ELEMENT 3 NOEUDS DKT
C                                        4 NOEUDS DKQ
C     LRE NOMBRE DE DDL DE L ELEMENT
C     6 DDL PAR NOEUD
C  ENTREES
C    VKE(LRE,LRE)  = MATRICE DE RAIDEUR APRES CHGMNT DE REPERE
C    B(3,3)   = MATRICE DE PASSAGE
C    LRE      = NOMBRE  DE D.D.L. DANS LA MATRICE DE RIGIDITE
C    NBNO     = NOMBRE DE NOEUDS ( LRE = NBNO*6
C    ICOM     = 0 SI LES D.D.L. DE FLEXION SONT DECOUPLES DES
C                        D.D.L. DE MEMBRANE  1 SINON
C  SORTIES
C    VKE(LRE,LRE)  = MATRICE DE CORIOLIS APRES CHGMNT DE REPERE
C
C       D'APRES TRANSK COMBESCURE 2004
C=====================================================
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
      DIMENSION VKE(LRE,*),B(3,*)
      DIMENSION AA(3,3),A(3,3)
      DIMENSION IMLT(36)
      DATA IMLT/1,2,1,4,3,1,2,4,2,1,4,3,4,3,1,2,4,2,4,2,1,
     1    4,3,4,3,4,3,1,2,4,2,4,2,4,2,1/
      NB=NBNO+NBNO
      IJ=1
      JTROIS=0
      DO 100 J=1,NB
      ITROIS=0
      DO 200 I=1,NB
      ITROIS =3*I - 3
      JTROIS =3*J - 3
C     TRANSVASE UN BLOC 3 3 DE VKE DANS LA MATRICE DE TRAVAIL A
      DO 401 IA=1,3
      DO 300 IB=1,3
      A(IA,IB)=VKE(ITROIS+IA,JTROIS+IB)
  300 CONTINUE
  401 CONTINUE
C     MATRICE NON SYMETRIQUE
      CALL VMULT4(A,AA,B)
  350 CONTINUE
C     TRANSVASE LA MATRICE AA DANS LE BLOC 3 3 DE VKE
      DO 402 IA=1,3
      DO 400 IB=1,3
      VKE(ITROIS+IA,JTROIS+IB)=AA(IA,IB)
C      VKE(JTROIS+IB,ITROIS+IA)=(-1.D0)*AA(IA,IB)
  400 CONTINUE
  402 CONTINUE
      IJ=IJ+1
  200 CONTINUE
  100 CONTINUE
C  200 ITROIS=ITROIS+3
C  100 JTROIS=JTROIS+3
      RETURN
      END


 
