      SUBROUTINE ETRMIT4(COOR,CAR,IOPT,POL,XNORM,ae)
C-----*--*---------*---------*---------*---------*---------*---------*--
C
C BUT : CALCUL DE LA MATRICE DE RIGIDITE DE L ELEMENT MIT4
C ---
C-----*--*---------*---------*---------*---------*---------*---------*--
C parametres d entree :
C -------------------
C coor   : coor(npo,ndim) coordonnees
C car    : caracteristiques des materiaux
c          e, nu, t(nno)
c iopt   : options
c          iopt(1) = notel = 1 cas stadard, 
c                           10 si pas interpolatio
c          iopt(2) = ichoix >0 regulier
c                    -i e=x_i
c          iopt(3) = 5 si 5ddl par noud
c                    6 si 6 ddl par noud
c pol    : pol(96) contient vp2,vdpq2,vdtq2
c          1   : vp2(nno,npi+npt)
c          17  : vp2(1,npi+1)
c          33  : vdpq2(2,nno,npi)
c          65  : vdpt2(2,nno,npt)
C
C parametres resultats :
C --------------------
C AE     : MATRICE DE RIGIDITE DE L ELEMENT
C          SEULE LA PARTIE SUPERIEURE DE HAUT EN BAS ET DE LA GAUCHE
C          VERS LA DROITE EST STOCKEE
C
C-----*--*---------*---------*---------*---------*---------*---------*--
      PARAMETER (nno =4, npi = 4, npiz = 2, ndl =5 ,npt =4,
     *           npt1 = 2, npt2=2, npt3=0, nmat=210, npo=4, nmat6=300)
c      parameter (xg3 = sqtr(3./5.), xg2 = 1/sqrt(3))
      double precision xg2,xg2m
      parameter (xg2 =  .5773502691896258)
      parameter (xg2m =  -.5773502691896258)
      external inmit4
      integer ijt(nno*5),irint(5),iopt(*)
      double precision coor(npo,3),xint(npi),yint(npi),zint(npiz),
     *                 pol(96)
      double precision inmit4,
     *                 poids(npi),poiz(npiz),car(*),ae(nmat6),un,zero,
     *                 xnorm(3,nno),v1(3,nno),v2(3,nno),tt(npi),
     *                 gzz(npi),f(3,3,npt),fz(3,3,npt),fi(3,3,npi),
     *                 fiz(3,3,npi),ae5(nmat)
      parameter (zero=0., un=1.)
C
C
      double precision b(5,5*nno),bz(5,5*nno),bzz(5,5*nno)
C
      DATA IJT/1, 6,11,16,
     &         2, 7,12,17,
     &         3, 8,13,18,
     &         4, 9,14,19,
     &         5,10,15,20/
c
c     composantes de eps reinterpolees
c
      data irint /0,0,0,1,1/

c     integration points en r,s
c
      data poids /un,un,un,un /
      data xint /xg2m, xg2,xg2, xg2m/
      data yint /xg2m, xg2m,xg2,xg2 /

c
c     integration points en z
c
      data poiz /un,un/
      data zint /xg2m,xg2/

c
c     calcul des normales (tying+integration) et V1,V2 (tying)
c
      ichoix = iopt(2)
      call replo1(nno,xnorm,v1,v2,ichoix)

c
c     calcul de F  f1,i=g,i au tying points
c
      ind = 0
      call fonmit(nno,npt,COOR(1,1),COOR(1,2),COOR(1,3),xnorm,car(3),
     *            pol(65),pol(17),f,fz,ind,gzz,tt)

c
c     F au pt integration
c
      ind = 1
      call fonmit(nno,npi,COOR(1,1),COOR(1,2),COOR(1,3),xnorm,car(3),
     *            pol(33),pol,fi,fiz,ind,gzz,tt)

c
c     calcul de la matrice d'elasticite
c     ---------------------------------
c     ds car il y a ds l ordre E,enu,t(nno)
c     t(nno) -- > car(3)

c
c     si notel = 10 pas de reinterpolation
c
      if (iopt(1) .eq. 10) then
         do 1 i = 1,5
            irint(i) = 0
 1       continue
      endif
      if (iopt(3) .eq. 5) then 
c
c        --- > 5 ddl/noeud
         CALL Dcopy(NMat,zero,0,AE,1)
         call mitlin(nno,npt1,npt2,npt3,npt,irint,npi,poids,npiz,zint,
     *            poiz,xint,yint,pol(65),pol(17),f,fz,inmit4,car,car(2),
     *            car(3),COOR(1,1),COOR(1,2),COOR(1,3),pol(33),pol,
     *            b,bz,bzz,xnorm,v1,v2,fi,fiz,gzz,tt,ijt,ae, nmat)
      elseif (iopt(3) .eq. 7) then
C        --- > 6 ddl/noeud Cas Coventor Plaques minces
c
         CALL Dcopy(NMat,zero,0,AE5,1)
         call mitlin(nno,npt1,npt2,npt3,npt,irint,npi,poids,npiz,zint,
     *            poiz,xint,yint,pol(65),pol(17),f,fz,inmit4,car,car(2),
     *            car(3),COOR(1,1),COOR(1,2),COOR(1,3),pol(33),pol,
     *            b,bz,bzz,xnorm,v1,v2,fi,fiz,gzz,tt,ijt,ae5, nmat)
             call chan57mod(nno,ae5,nmat,ae,nmat6,car(3),car(1),COOR)
      else
c
c        --- > 6 ddl/noeud 
         CALL Dcopy(NMat,zero,0,AE5,1)
         call mitlin(nno,npt1,npt2,npt3,npt,irint,npi,poids,npiz,zint,
     *            poiz,xint,yint,pol(65),pol(17),f,fz,inmit4,car,car(2),
     *            car(3),COOR(1,1),COOR(1,2),COOR(1,3),pol(33),pol,
     *            b,bz,bzz,xnorm,v1,v2,fi,fiz,gzz,tt,ijt,ae5, nmat)
         call chan56(nno,ae5,nmat,ae,nmat6,car(3),v1,v2, xnorm,car(1))

      endif
      end
