C ELLP12    SOURCE    CHAT      05/01/12    23:35:16     5004
        SUBROUTINE ELLP12(CORRES,XCL,FLAG,NUMERO,MASS,NMAS,
     *                    NP,NP24,NNT,ZA1,ZSM)
C
      IMPLICIT INTEGER(I-N)
        IMPLICIT REAL*8     (A-H,O-Y)
        IMPLICIT COMPLEX*16 (Z)
C
C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
C   OPERATEUR ELFE LAPLACE POUTRE
C
C   PROGRAMME APPELE PAR ELLP11 : CALCUL LA DEUXIEME PARTIE DE LA
C   MATRICE ZA1 ET DE SECOND MEMBRE ZSM
C
C
C
C   PARAMETRES :
C
C   ENTREE :
C
C   CORRES : TABLEAU D'ENTIER DES NUMEROS DES NOEUDS REELS
C            POUR CHAQUE NOEUD FICTIF
C   XCL    : TABLEAU DES VALEURS DES CONDITIONS AUX LIMITES
C   FLAG   : TABLEAU DE POINTEURS SUR XCL
C   NUMERO : TABLEAU DE TRANSFORMATION NUMERO GLOBAL <--> NUMERO LOCAL
C
C   NP     : NOMBRE DE POUTRES
C   NNT    : NOMBRE DE NOEUDS REELS
C
C
C   SORTIES :
C
C   ZA1    : TABLEAU COMPLEXE REPRESENTANT LA MATRICE DE "RIGIDITE"
C   ZSM    : VECTEUR COMPLEXE SECOND MEMBRE
C
C
C   AUTEUR : SAINT-DIZIER
C   DATE   : 22 DECEMBRE 1989 (VERSION DU 03 AVRIL 1990)
C
C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
        COMPLEX*16 ZA1(NP24,*),ZSM(*)
        REAL*8     XCL(12,*)
        INTEGER    FLAG(*),CORRES(*),NUMERO(*),MASS(NNT,4)
C
C **********************************************************************
C         REMPLISSAGE DE LA 2EME PARTIE DE ZA1 (INDEPENDANT DE W)
C         + 2EME PARTIE DU SECOND MEMBRE
C **********************************************************************
C
        ZI = 1.D0
C
        IZA1 = 12 * NP + 1
        NP2  = 2 * NP
C
C
C ---------------------  CONDITION DE NOEUDS IDENTIQUES
C
        DO 10 I = 1 , NNT
C
           ITEST = 0
           J = 0
C
11         J = J + 1
C
           IF ((CORRES(J).EQ.NUMERO(I)).AND.(ITEST.EQ.0)) THEN
              J0 = J
              ITEST = 1
           ELSE IF ((CORRES(J).EQ.NUMERO(I)).AND.(ITEST.EQ.1)) THEN
              ZA1 (IZA1   , 12*(J0-1)+1 ) = ZI
              ZA1 (IZA1+1 , 12*(J0-1)+2 ) = ZI
              ZA1 (IZA1+2 , 12*(J0-1)+3 ) = ZI
              ZA1 (IZA1+3 , 12*(J0-1)+4 ) = ZI
              ZA1 (IZA1+4 , 12*(J0-1)+5 ) = ZI
              ZA1 (IZA1+5 , 12*(J0-1)+6 ) = ZI
C
              ZA1 (IZA1   , 12*(J-1)+1 ) = -ZI
              ZA1 (IZA1+1 , 12*(J-1)+2 ) = -ZI
              ZA1 (IZA1+2 , 12*(J-1)+3 ) = -ZI
              ZA1 (IZA1+3 , 12*(J-1)+4 ) = -ZI
              ZA1 (IZA1+4 , 12*(J-1)+5 ) = -ZI
              ZA1 (IZA1+5 , 12*(J-1)+6 ) = -ZI
              IZA1 = IZA1 + 6
C
              ENDIF
C
              IF (J.NE.NP2) GOTO 11
C
10      CONTINUE
C
C
        DO 100 I = 1 , NNT
C
C ---------------------  CONDITION AUX LIMITES SUR LE DEPLACEMENT
C
            IF (FLAG((I-1)*12+1).EQ.I) THEN
C
            J = 0
            ISTOP = 0
20          J = J + 1
            IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
C
                ZA1 (IZA1   , 12*(J-1)+1 ) = ZI
                ZSM ( IZA1  ) = CMPLX(XCL ( 1,I))
C
                IZA1 = IZA1 + 1
                ISTOP = 1
C
              ENDIF
C
              IF (J.NE.NP2) GO TO 20
C
            END IF
C
C
            IF (FLAG((I-1)*12+2).EQ.I) THEN
C
            J = 0
            ISTOP = 0
21          J = J + 1
            IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
C
                ZA1 (IZA1   , 12*(J-1)+2 ) = ZI
                ZSM ( IZA1  ) = CMPLX(XCL ( 2,I))
C
                IZA1 = IZA1 + 1
                ISTOP = 1
C
              ENDIF
C
              IF (J.NE.NP2) GO TO 21
C
            END IF
C
C
            IF (FLAG((I-1)*12+3).EQ.I) THEN
C
            J = 0
            ISTOP = 0
22          J = J + 1
            IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
C
                ZA1 (IZA1   , 12*(J-1)+3 ) = ZI
                ZSM ( IZA1  ) = CMPLX(XCL ( 3,I))
C
                IZA1 = IZA1 + 1
                ISTOP = 1
C
              ENDIF
C
              IF (J.NE.NP2) GO TO 22
C
            END IF
C
C ---------------------  CONDITION AUX LIMITES SUR LA ROTATION
C
            IF (FLAG((I-1)*12+4).EQ.I) THEN
C
              J = 0
              ISTOP = 0
30            J = J + 1
              IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
C
                ZA1 (IZA1   , 12*(J-1)+4 ) = ZI
                ZSM ( IZA1  ) = CMPLX(XCL ( 4,I))
C
                IZA1 = IZA1 + 1
                ISTOP = 1
C
              ENDIF
C
              IF (J.NE.NP2) GO TO 30
C
            END IF
C
C
            IF (FLAG((I-1)*12+5).EQ.I) THEN
C
              J = 0
              ISTOP = 0
31            J = J + 1
              IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
C
                ZA1 (IZA1   , 12*(J-1)+5 ) = ZI
                ZSM ( IZA1  ) = CMPLX(XCL ( 5,I))
C
                IZA1 = IZA1 + 1
                ISTOP = 1
C
              ENDIF
C
              IF (J.NE.NP2) GO TO 31
C
            END IF
C
C
            IF (FLAG((I-1)*12+6).EQ.I) THEN
C
              J = 0
              ISTOP = 0
32            J = J + 1
              IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
C
                ZA1 (IZA1   , 12*(J-1)+6 ) = ZI
                ZSM ( IZA1  ) = CMPLX(XCL ( 6,I))
C
                IZA1 = IZA1 + 1
                ISTOP = 1
C
              ENDIF
C
              IF (J.NE.NP2) GO TO 32
C
            END IF
C
C ---------------------  CONDITION AUX LIMITES SUR LA FORCE
C
            IF (FLAG((I-1)*12+1).EQ.0) THEN
C
              DO 40 J = 1 , 2*NP
                  IF (CORRES(J).EQ.NUMERO(I)) THEN
C
                    ZA1 (IZA1   , 12*(J-1)+7 ) = ZI
C
                  END IF
40            CONTINUE
C
              ZSM ( IZA1  ) =  CMPLX(XCL(7,I))
C
              IF (NMAS.GT.0) THEN
                DO 41 I1 = 1 , NMAS
                  IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
                    MASS(I1,4) = IZA1
                  END IF
41              CONTINUE
              END IF
C
              IZA1 = IZA1 + 1
C
            END IF
C
C
            IF (FLAG((I-1)*12+2).EQ.0) THEN
C
              DO 42 J = 1 , 2*NP
                  IF (CORRES(J).EQ.NUMERO(I)) THEN
                    ZA1 (IZA1   , 12*(J-1)+8 ) = ZI
C
                  END IF
42            CONTINUE
C
              ZSM ( IZA1  ) =  CMPLX(XCL(8,I))
C
              IF (NMAS.GT.0) THEN
                DO 43 I1 = 1 , NMAS
                  IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
                    MASS(I1,4) = IZA1-1
                  END IF
43              CONTINUE
              END IF
C
              IZA1 = IZA1 + 1
C
            END IF
C
C
            IF (FLAG((I-1)*12+3).EQ.0) THEN
C
              DO 44 J = 1 , 2*NP
                  IF (CORRES(J).EQ.NUMERO(I)) THEN
                    ZA1 (IZA1   , 12*(J-1)+9 ) = ZI
C
                  END IF
44            CONTINUE
C
              ZSM ( IZA1  ) =  CMPLX(XCL(9,I))
C
              IF (NMAS.GT.0) THEN
                DO 45 I1 = 1 , NMAS
                  IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
                    MASS(I1,4) = IZA1-2
                  END IF
45              CONTINUE
              END IF
C
              IZA1 = IZA1 + 1
C
            END IF
C
C ---------------------  CONDITION AUX LIMITES SUR LE MOMENT
C
            IF (FLAG((I-1)*12+4).EQ.0) THEN
C
              DO 50 J = 1 , 2*NP
                  IF (CORRES(J).EQ.NUMERO(I)) THEN
                    ZA1 (IZA1   , 12*(J-1)+10) = ZI
                  END IF
50            CONTINUE
C
              ZSM ( IZA1  ) =  CMPLX(XCL(10,I))
C
              IF (NMAS.GT.0) THEN
                DO 51 I1 = 1 , NMAS
                  IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
                    MASS(I1,4) = IZA1-3
                  END IF
51              CONTINUE
              END IF
C
              IZA1 = IZA1 + 1
C
            END IF
C
C
            IF (FLAG((I-1)*12+5).EQ.0) THEN
C
              DO 52 J = 1 , 2*NP
                  IF (CORRES(J).EQ.NUMERO(I)) THEN
                    ZA1 (IZA1   , 12*(J-1)+11) = ZI
                  END IF
52            CONTINUE
C
              ZSM ( IZA1  ) =  CMPLX(XCL(11,I))
C
              IF (NMAS.GT.0) THEN
                DO 53 I1 = 1 , NMAS
                  IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
                    MASS(I1,4) = IZA1-4
                  END IF
53              CONTINUE
              END IF
C
              IZA1 = IZA1 + 1
C
            END IF
C
C
            IF (FLAG((I-1)*12+6).EQ.0) THEN
C
              DO 54 J = 1 , 2*NP
                  IF (CORRES(J).EQ.NUMERO(I)) THEN
                    ZA1 (IZA1   , 12*(J-1)+12) = ZI
                  END IF
54            CONTINUE
C
              ZSM ( IZA1  ) =  CMPLX(XCL(12,I))
C
              IF (NMAS.GT.0) THEN
                DO 55 I1 = 1 , NMAS
                  IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
                    MASS(I1,4) = IZA1-5
                  END IF
55              CONTINUE
              END IF
C
              IZA1 = IZA1 + 1
C
            END IF
C
C
100     CONTINUE
C
        END

