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