ella12
C ELLA12 SOURCE CHAT 05/01/12 23:34:04 5004 & MASS ,NMAS ,IRAILO ,VALRAI, NRAIDE , & NP,NP28,NNT,ZA1,ZSM,ZS,XPI,IMP) C C OPERATEUR ELFE LAPLACE ACOU C C PROGRAMME APPELE PAR ELLA11 : CALCUL LA DEUXIEME PARTIE DE LA C MATRICE ZA1 ET DE SECOND MEMBRE ZSM 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 CARACT : TABLEAU DES CARACTERISTIQUES DES POUTRES C COOR : TABLEAU DES COORDONNEES DES NOEUDS FICTIFS C C NP : NOMBRE DE POUTRES C NNT : NOMBRE DE NOEUDS REELS C ZS : VALEUR DE S = S0 + I W C XPI : VALEUR PRECISE DE PI C C C SORTIES : C C ZA1 : TABLEAU COMPLEXE REPRESENTANT LA MATRICE DE "RIGIDITE" C ZSM : VECTEUR COMPLEXE SECOND MEMBRE C C C AUTEURS : SAINT-DIZIER ET GORCY C DATE : 29 JANVIER 1991 C MODIFICATION : 26 JUIN 1991 C C IMPLICIT INTEGER(I-N) COMPLEX*16 ZA1,ZSM,ZB,ZI,ZS REAL*8 XCL,CARACT,COOR,VALRAI,XPI,X1,Y1,Z1,X2,Y2,Z2, & XI1,XI2,XI3,XL,CSEF,CROF INTEGER FLAG,CORRES,NUMERO,MASS,IRAILO,J0,JCOLO C DIMENSION ZA1(NP28,*),ZSM(*) DIMENSION XCL(17,*),CARACT(10,*),COOR(3,*),VALRAI(6,*), & FLAG(*),CORRES(*),NUMERO(*),MASS(4,*),IRAILO(4,*) C C REMPLISSAGE DE LA 2EME PARTIE DE ZA1 (INDEPENDANT DE W) C + 2EME PARTIE DU SECOND MEMBRE C J0=0 JCOLO=0 ZI = CMPLX(1.D0,0.D0) C IZA1 = 14 * NP + 1 NP2 = 2 * NP C C --------------------- CONDITION DE NOEUDS IDENTIQUES C (CONTINUITE DU DEPLACEMENT ET DE LA PRESSION) 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 C ZA1 (IZA1 , 14*(J0-1)+1 ) = -ZI ZA1 (IZA1+1 , 14*(J0-1)+2 ) = -ZI ZA1 (IZA1+2 , 14*(J0-1)+3 ) = -ZI ZA1 (IZA1+3 , 14*(J0-1)+4 ) = -ZI ZA1 (IZA1+4 , 14*(J0-1)+5 ) = -ZI ZA1 (IZA1+5 , 14*(J0-1)+6 ) = -ZI ZA1 (IZA1+6 , 14*(J0-1)+13) = -ZI C ZA1 (IZA1 , 14*(J-1)+1 ) = ZI ZA1 (IZA1+1 , 14*(J-1)+2 ) = ZI ZA1 (IZA1+2 , 14*(J-1)+3 ) = ZI ZA1 (IZA1+3 , 14*(J-1)+4 ) = ZI ZA1 (IZA1+4 , 14*(J-1)+5 ) = ZI ZA1 (IZA1+5 , 14*(J-1)+6 ) = ZI ZA1 (IZA1+6 , 14*(J-1)+13) = ZI C C INTRODUCTION DES SOUPLESSES DANS LA MATRICE ZA1 C IF (NRAIDE.GT.0) THEN C DO 15 IM1 = 1 , NRAIDE C IF (IRAILO(4,IM1).EQ.2) THEN C C COUDE C JCOLO=(14*(IRAILO(2,IM1)-1) ) + 7 ELSE IF (IRAILO(4,IM1).EQ.3) THEN C C TE C JCOLO=(14*(IRAILO(1,IM1)-1) ) + 7 ELSE IF (IMP.NE.0) THEN WRITE(IMP,*) ENDIF 600 FORMAT(1X,'IL Y A UNE ERREUR') END IF C IF ( (IRAILO(2,IM1).EQ.J0).OR.(IRAILO(1,IM1).EQ.J) ) THEN C ZA1 (IZA1 , JCOLO ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/ & VALRAI(1,IM1) ) ZA1 (IZA1+1, JCOLO + 1 ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/ & VALRAI(2,IM1) ) ZA1 (IZA1+2, JCOLO + 2 ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/ & VALRAI(3,IM1) ) ZA1 (IZA1+3, JCOLO + 3 ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/ & VALRAI(4,IM1) ) ZA1 (IZA1+4, JCOLO + 4 ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/ & VALRAI(5,IM1) ) ZA1 (IZA1+5, JCOLO + 5 ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/ & VALRAI(6,IM1) ) END IF C 15 CONTINUE END IF C ZSM ( IZA1+6 ) = CMPLX(XCL ( 13,I)) C IZA1 = IZA1 + 7 C END IF C IF (J.NE.NP2) GOTO 11 C 10 CONTINUE C DO 100 I = 1 , NNT C C --------------------- CONDITION AUX LIMITES SUR LE DEPLACEMENT C IF (FLAG((I-1)*17+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 , 14*(J-1)+1 ) = ZI ZSM ( IZA1 ) = CMPLX(XCL ( 1,I)) C IZA1 = IZA1 + 1 ISTOP = 1 C END IF C IF (J.NE.NP2) GO TO 20 C END IF C IF (FLAG((I-1)*17+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 , 14*(J-1)+2 ) = ZI ZSM ( IZA1 ) = CMPLX(XCL ( 2,I)) C IZA1 = IZA1 + 1 ISTOP = 1 C END IF C IF (J.NE.NP2) GO TO 21 C END IF C C IF (FLAG((I-1)*17+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 , 14*(J-1)+3 ) = ZI ZSM ( IZA1 ) = CMPLX(XCL ( 3,I)) C IZA1 = IZA1 + 1 ISTOP = 1 C END IF C IF (J.NE.NP2) GO TO 22 C END IF C C --------------------- CONDITION AUX LIMITES SUR LA ROTATION C IF (FLAG((I-1)*17+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 , 14*(J-1)+4 ) = ZI ZSM ( IZA1 ) = CMPLX(XCL ( 4,I)) C IZA1 = IZA1 + 1 ISTOP = 1 C END IF C IF (J.NE.NP2) GO TO 30 C END IF C IF (FLAG((I-1)*17+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 , 14*(J-1)+5 ) = ZI ZSM ( IZA1 ) = CMPLX(XCL ( 5,I)) C IZA1 = IZA1 + 1 ISTOP = 1 C END IF C IF (J.NE.NP2) GO TO 31 C END IF C IF (FLAG((I-1)*17+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 , 14*(J-1)+6 ) = ZI ZSM ( IZA1 ) = CMPLX(XCL ( 6,I)) C IZA1 = IZA1 + 1 ISTOP = 1 C END IF C IF (J.NE.NP2) GO TO 32 C END IF C C --------------------- CONDITION AUX LIMITES SUR LA FORCE C IF (FLAG((I-1)*17+1).EQ.0) THEN C DO 40 J = 1 , 2*NP IF (CORRES(J).EQ.NUMERO(I)) THEN C INP = INT((J+1)/2) CSEF = XPI * CARACT(4,INP) * CARACT(4,INP) N1 = 2*INP-1 N2 = 2*INP X1 = COOR (1,N1) Y1 = COOR (2,N1) Z1 = COOR (3,N1) X2 = COOR (1,N2) Y2 = COOR (2,N2) Z2 = COOR (3,N2) XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2) C XI1 = (X2-X1)/XL IF (J.EQ.N2) THEN XI1 = -XI1 END IF C ZA1 (IZA1 , 14*(J-1)+7 ) = ZI ZA1 (IZA1 , 14*(J-1)+13) = -CMPLX( CSEF*XI1 ) 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(1,I1)).EQ.NUMERO(I)) THEN MASS(4,I1) = IZA1 END IF 41 CONTINUE END IF C IZA1 = IZA1 + 1 C END IF C C IF (FLAG((I-1)*17+2).EQ.0) THEN C DO 42 J = 1 , 2*NP IF (CORRES(J).EQ.NUMERO(I)) THEN C INP = INT((J+1)/2) CSEF = XPI * CARACT(4,INP) * CARACT(4,INP) N1 = 2*INP-1 N2 = 2*INP X1 = COOR (1,N1) Y1 = COOR (2,N1) Z1 = COOR (3,N1) X2 = COOR (1,N2) Y2 = COOR (2,N2) Z2 = COOR (3,N2) XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2) C XI2 = (Y2-Y1)/XL IF (J.EQ.N2) THEN XI2 = -XI2 END IF C ZA1 (IZA1 , 14*(J-1)+8 ) = ZI ZA1 (IZA1 , 14*(J-1)+13) = -CMPLX( CSEF*XI2 ) 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(1,I1)).EQ.NUMERO(I)) THEN MASS(4,I1) = IZA1-1 END IF 43 CONTINUE END IF C IZA1 = IZA1 + 1 C END IF C C IF (FLAG((I-1)*17+3).EQ.0) THEN C DO 44 J = 1 , 2*NP IF (CORRES(J).EQ.NUMERO(I)) THEN C INP = INT((J+1)/2) CSEF = XPI * CARACT(4,INP) * CARACT(4,INP) N1 = 2*INP-1 N2 = 2*INP X1 = COOR (1,N1) Y1 = COOR (2,N1) Z1 = COOR (3,N1) X2 = COOR (1,N2) Y2 = COOR (2,N2) Z2 = COOR (3,N2) XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2) C XI3 = (Z2-Z1)/XL IF (J.EQ.N2) THEN XI3 = -XI3 END IF C ZA1 (IZA1 , 14*(J-1)+9 ) = ZI ZA1 (IZA1 , 14*(J-1)+13) = -CMPLX( CSEF*XI3 ) 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(1,I1)).EQ.NUMERO(I)) THEN MASS(4,I1) = 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)*17+4).EQ.0) THEN C DO 50 J = 1 , 2*NP IF (CORRES(J).EQ.NUMERO(I)) THEN ZA1 (IZA1 , 14*(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(1,I1)).EQ.NUMERO(I)) THEN MASS(4,I1) = IZA1-3 END IF 51 CONTINUE END IF C IZA1 = IZA1 + 1 C END IF C C IF (FLAG((I-1)*17+5).EQ.0) THEN C DO 52 J = 1 , 2*NP IF (CORRES(J).EQ.NUMERO(I)) THEN ZA1 (IZA1 , 14*(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(1,I1)).EQ.NUMERO(I)) THEN MASS(4,I1) = IZA1-4 END IF 53 CONTINUE END IF C IZA1 = IZA1 + 1 C END IF C C IF (FLAG((I-1)*17+6).EQ.0) THEN C DO 54 J = 1 , 2*NP IF (CORRES(J).EQ.NUMERO(I)) THEN ZA1 (IZA1 , 14*(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(1,I1)).EQ.NUMERO(I)) THEN MASS(4,I1) = IZA1-5 END IF 55 CONTINUE END IF C IZA1 = IZA1 + 1 C END IF C C--------------------- CONDITION AUX LIMITES SUR LE DEBIT C IF (FLAG((I-1)*17+15).EQ.0) THEN C DO 60 J = 1 , 2*NP IF (CORRES(J).EQ.NUMERO(I)) THEN C INP = INT((J+1)/2) CSEF = XPI * CARACT(4,INP) * CARACT(4,INP) CROF = CARACT(9,INP) N1 = 2*INP-1 N2 = 2*INP X1 = COOR (1,N1) Y1 = COOR (2,N1) Z1 = COOR (3,N1) X2 = COOR (1,N2) Y2 = COOR (2,N2) Z2 = COOR (3,N2) XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2) C XI1 = (X2-X1)/XL XI2 = (Y2-Y1)/XL XI3 = (Z2-Z1)/XL IF (J.EQ.N2) THEN XI1 = -XI1 XI2 = -XI2 XI3 = -XI3 END IF C ZA1 (IZA1 , 14*(J-1)+14) = ZI IF (J.EQ.N2) ZA1 (IZA1 , 14*(J-1)+14) = -ZI ZA1 (IZA1 , 14*(J-1)+1) = -ZS * ( CROF*CSEF*XI1 ) ZA1 (IZA1 , 14*(J-1)+2) = -ZS * ( CROF*CSEF*XI2 ) ZA1 (IZA1 , 14*(J-1)+3) = -ZS * ( CROF*CSEF*XI3 ) C END IF C 60 CONTINUE C ZSM (IZA1 ) = CMPLX(XCL(14,I)) C IZA1 =IZA1 + 1 END IF C C--------------------- CONDITION AUX LIMITES D'IMPEDANCE ACOUSTIQUE C IF (FLAG((I-1)*17+15).EQ.I) THEN C ISTOP = 0 J = 0 C 70 J = J + 1 IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN C INP = INT((J+1)/2) CSEF = XPI * CARACT(4,INP) * CARACT(4,INP) CROF = CARACT(9,INP) N1 = 2*INP-1 N2 = 2*INP X1 = COOR (1,N1) Y1 = COOR (2,N1) Z1 = COOR (3,N1) X2 = COOR (1,N2) Y2 = COOR (2,N2) Z2 = COOR (3,N2) XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2) C XI1 = (X2-X1)/XL XI2 = (Y2-Y1)/XL XI3 = (Z2-Z1)/XL C ZA1 (IZA1 , 14*(J-1)+13 ) = CMPLX(XCL (15,I)) C ZB = CMPLX(XCL (16,I)) ZA1 (IZA1 , 14*(J-1)+14) = ZB ZA1 (IZA1 , 14*(J-1)+1) = -ZS * ( CROF*CSEF*XI1 )* ZB ZA1 (IZA1 , 14*(J-1)+2) = -ZS * ( CROF*CSEF*XI2 )* ZB ZA1 (IZA1 , 14*(J-1)+3) = -ZS * ( CROF*CSEF*XI3 )* ZB C ZSM ( IZA1 ) = CMPLX(XCL (17,I)) C IZA1 = IZA1+1 ISTOP = 1 END IF C IF (J.NE.NP2) GO TO 70 C END IF C 100 CONTINUE C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales