ellp23
C ELLP23 SOURCE KK2000 14/04/09 21:15:22 8027 * ZS,NP,NBELEM,XPI) 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 CALCUL POUR LA POUTRE N INP LES VALEURS DE Ua ET DE Ub EN LOCAL C C PARAMETRES : C C CARACT : TABLEAU DES CARACTERISTIQUE DES POUTRES (9,NP) C COOR : TABLEAU DES COORDONNEES DES NOEUDS (3,2*NP) C GAMA : TABLEAU DES VECTEUR DEFINISSANT LE PLAN LOCALE OXY (3,2*NP) C ZXX : VECTEUR (24*NP) DONNANT LE VECTEUR SOLUTION DU TREILLIS C DANS LE REPERE GLOBAL C XCOR : TABLEAU DONNANT LES COORD. DES NOEUDS DE L'OBJET MAILLAGE C DANS LE REPERE GLOBAL C ZS : VALEUR DE S = S0 + I W C NP : NOMBRE DE POUTRES DU TREILLIS C NBELEM : NOMBRE D'ELEMENTS DU SOUS-MAILLAGE C XPI : VALEUR PRECISE DE PI C C C SORTIES : C C VALDE1 : MODULE DE UX, UY, UZ POUR LES 2 POINTS DE CHAQUE ELEMENT C DU SOUS-MAILLAGE C VALDE2 : PHASE DE UX, UY, UZ POUR LES 2 POINTS DE CHAQUE ELEMENT C DU SOUS-MAILLAGE C C C AUTEUR : SAINT-DIZIER C DATE : 19 JUILLET 1990 C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C DIMENSION CARACT(12,*),COOR(3,*),GAMA(3,*) DIMENSION ZXX(*),XCOR(2,3,NBELEM) DIMENSION VALDE1(2,NBELEM,3),VALDE2(2,NBELEM,3) C DIMENSION ZU(24),ZU1(24),ZU2(24) DIMENSION R1(3,3),R2(3,3),ZD(12),ZE(12,12) C DO 100 INP = 1 , NP C DO 101 II = 1 , 24 ZU(II) = ZXX(24*(INP-1)+II) 101 CONTINUE C C C -------------- ACQUISITION DES CARACTERISTIQUES DE LA POUTRE C --------------------------------------------- CE = CARACT( 1,INP) CNU = CARACT( 2,INP) CRO = CARACT( 3,INP) CSE = CARACT( 4,INP) CC = CARACT( 5,INP) CIP = CARACT( 6,INP) CIY = CARACT( 7,INP) CIZ = CARACT( 8,INP) CKCY = CARACT( 9,INP) CKCZ = CARACT(10,INP) CAM = CARACT(11,INP) CETA = CARACT(12,INP) C ZI = (0.D0 , 1.D0) C ZCE = CE*(CMPLX(1.D0)+CETA*ZI) ZCP = SQRT(ZCE/CRO) ZCMU = ZCE/(CMPLX(2.D0)*(CMPLX(1.D0)+CNU)) ZCR = SQRT(ZCMU/CRO) C ZALFA2= ZS*ZS*CRO*CSE + CAM*ZS ZALFA2= ZALFA2 / (ZCE*CSE) ZALFAX= SQRT(ZALFA2) C ZALFA2= ZS*ZS*CRO*CIP + CAM*ZS ZALFA2= ZALFA2 / (ZCMU*CC) ZALFAR= SQRT(ZALFA2) C ZALFA4= CRO*CRO*CIZ*ZS*ZS*ZS*ZS/ZCMU/CKCY * + CAM*CRO*CIZ*ZS*ZS*ZS/ZCMU/CKCY/CSE * + CRO*CSE*ZS*ZS * + CAM*ZS ZALFA4= ZALFA4/(ZCE*CIZ) ZALFA2= SQRT(ZALFA4) ZALFAY= SQRT(ZALFA2) C ZZ3 = CRO*CIZ*(CMPLX(1.D0)+ZCE/(ZCMU*CKCY))*ZS*ZS * + CAM*ZCE*CIZ*ZS/(ZCMU*CKCY*CSE) ZZ3 = ZZ3 / (ZCE*CIZ*ZALFA2) C ZALFA4= CRO*CRO*CIY*ZS*ZS*ZS*ZS/ZCMU/CKCZ * + CAM*CRO*CIY*ZS*ZS*ZS/ZCMU/CKCZ/CSE * + CRO*CSE*ZS*ZS * + CAM*ZS ZALFA4= ZALFA4/(ZCE*CIY) ZALFA2= SQRT(ZALFA4) ZALFAZ= SQRT(ZALFA2) C ZZ4 = CRO*CIY*(CMPLX(1.D0)+ZCE/(ZCMU*CKCZ))*ZS*ZS * + CAM*ZCE*CIY*ZS/(ZCMU*CKCZ*CSE) ZZ4 = ZZ4 / (ZCE*CIY*ZALFA2) C N1 = 2*INP-1 N2 = 2*INP XXA = COOR (1,N1) XYA = COOR (2,N1) XZA = COOR (3,N1) XXB = COOR (1,N2) XYB = COOR (2,N2) XZB = COOR (3,N2) C XL = SQRT((XXB-XXA)**2 + (XYB-XYA)**2 + (XZB-XZA)**2) C C ------------------------------ VECTEUR UNITAIRE OX REPERE LOCALE C --------------------------------- XI1 = (XXB-XXA)/XL XI2 = (XYB-XYA)/XL XI3 = (XZB-XZA)/XL C C ------------------------- VECTEUR UNITAIRE OY REPERE LOCALE C --------------------------------- GX = GAMA(1,INP) GY = GAMA(2,INP) GZ = GAMA(3,INP) GG = SQRT(GX*GX + GY*GY + GZ*GZ) GX = GX/GG GY = GY/GG GZ = GZ/GG C DELTA = SQRT (1.D0 - (XI1*GX + XI2*GY + XI3*GZ)**2) C C C C ---------------------------- VECTEUR UNITAIRE OZ REPERE LOCALE C --------------------------------- XK1 = XI2*XJ3 - XI3*XJ2 XK2 = XI3*XJ1 - XI1*XJ3 XK3 = XI1*XJ2 - XI2*XJ1 C R1(1,1) = XI1 R1(1,2) = XJ1 R1(1,3) = XK1 R1(2,1) = XI2 R1(2,2) = XJ2 R1(2,3) = XK2 R1(3,1) = XI3 R1(3,2) = XJ3 R1(3,3) = XK3 C C R2(1,1) = XJ2*XK3 - XJ3*XK2 R2(1,2) = XJ3*XK1 - XJ1*XK3 R2(1,3) = XJ1*XK2 - XJ2*XK1 R2(2,1) = XI3*XK2 - XI2*XK3 R2(2,2) = XI1*XK3 - XI3*XK1 R2(2,3) = XI2*XK1 - XI1*XK2 R2(3,1) = XI2*XJ3 - XI3*XJ2 R2(3,2) = XI3*XJ1 - XI1*XJ3 R2(3,3) = XI1*XJ2 - XI2*XJ1 C C ----------------------------- MATRICE DIMENSIONNEMENT ZD C -------------------------- ZD( 1) = XL**2/ZCP ZD( 2) = XL**2/ZCP ZD( 3) = XL**2/ZCP ZD( 4) = XL/ZCR ZD( 5) = XL**2/ZCP*ZALFAZ ZD( 6) = XL**2/ZCP*ZALFAY ZD( 7) = XL**2/ZCP*ZALFAX ZD( 8) = XL**2/ZCP*(ZALFAY**3) ZD( 9) = XL**2/ZCP*(ZALFAZ**3) ZD(10) = XL/ZCR*ZALFAR ZD(11) = XL**2/ZCP*(ZALFAZ**2) ZD(12) = XL**2/ZCP*(ZALFAY**2) C C C ------------------------------- MATRICE DES EFFORTS ZE C ---------------------- DO 20 I = 1 , 12 DO 21 J = 1 , 12 ZE(I,J) = 0.D0 21 CONTINUE 20 CONTINUE C C ZA5 = CMPLX(1.D0) ZA6 = CMPLX(1.D0) ZB6 = CMPLX(1.D0) / (ZCMU*CKCY*CSE) ZB5 = CMPLX(1.D0) / (ZCMU*CKCZ*CSE) C ZA8 = (CRO*CSE*ZS*ZS+CAM*ZS)/(ZCMU*ZCMU*CKCY*CKCY*CSE*CSE) * - CMPLX(1.D0)/(ZCE*CIZ) ZA9 = (CRO*CSE*ZS*ZS+CAM*ZS)/(ZCMU*ZCMU*CKCZ*CKCZ*CSE*CSE) * - CMPLX(1.D0)/(ZCE*CIY) ZB8 = CRO*ZS*ZS*(CMPLX(1.D0)/(ZCMU*CKCY)+CMPLX(1.D0)/ZCE) * + CAM*ZS/(ZCMU*CKCY*CSE) ZB9 = CRO*ZS*ZS*(CMPLX(1.D0)/(ZCMU*CKCZ)+CMPLX(1.D0)/ZCE) * + CAM*ZS/(ZCMU*CKCZ*CSE) C ZA12= CMPLX(1.D0)/(ZCE*CIZ) ZA11= CMPLX(1.D0)/(ZCE*CIY) ZB12= (CRO*CSE*ZS*ZS+CAM*ZS)/(ZCMU*CKCY*CSE) ZB11= (CRO*CSE*ZS*ZS+CAM*ZS)/(ZCMU*CKCZ*CSE) C C ZE( 1, 1) = CMPLX(1.D0) ZE( 2, 2) = CMPLX(1.D0) ZE( 3, 3) = CMPLX(1.D0) ZE( 4, 4) = CMPLX(1.D0) ZE( 5, 5) = ZA5 ZE( 5, 9) = ZB5 ZE( 6, 6) = ZA6 ZE( 6, 8) = ZB6 ZE( 7, 7) = CMPLX(1.D0)/(ZCE*CSE) ZE( 8, 6) = ZB8 ZE( 8, 8) = ZA8 ZE( 9, 5) = ZB9 ZE( 9, 9) = ZA9 ZE(10,10) =-CMPLX(1.D0)/(ZCMU*CC) ZE(11, 3) = ZB11 ZE(11,11) = ZA11 ZE(12, 2) = ZB12 ZE(12,12) = ZA12 C C C -- CACUL DE ZU1 = ZR * ZU C DO 27 I = 1 , 24 ZU1(I) = CMPLX(0.D0) ZU2(I) = CMPLX(0.D0) 27 CONTINUE C DO 26 I = 1 , 8 DO 25 J = 1 , 3 DO 24 K = 1 , 3 ZU1((I-1)*3+J)=ZU1((I-1)*3+J)+R2(J,K)*ZU((I-1)*3+K) 24 CONTINUE 25 CONTINUE 26 CONTINUE C C -- CACUL DE ZU2 = ZE * ZU1 C DO 30 I = 1,12 DO 31 J = 1,12 ZU2(I) = ZU2(I) + ZE(I,J)*ZU1(J) 31 CONTINUE 30 CONTINUE C DO 32 I = 1,12 DO 33 J = 1,6 ZU2(I+12) = ZU2(I+12) + ZE(I,J )*ZU1(J+12) ZU2(I+12) = ZU2(I+12) - ZE(I,J+6)*ZU1(J+18) 33 CONTINUE 32 CONTINUE C C C -- CACUL DE ZU2 = ZD * ZU2 C C DO 34 I = 1,12 ZU2(I ) = ZU2(I )/ZD(I) ZU2(I+12) = ZU2(I+12)/ZD(I) 34 CONTINUE C C C --------------- NBELEM : NOMBRE D'ELEMENTS DANS LE SOUS MAILLAGE C DO 110 IN = 1 , NBELEM C XX1 = XCOR ( 1,1,IN) XY1 = XCOR ( 1,2,IN) XZ1 = XCOR ( 1,3,IN) C XX2 = XCOR ( 2,1,IN) XY2 = XCOR ( 2,2,IN) XZ2 = XCOR ( 2,3,IN) C * XX1,XY1,XZ1,XX2,XY2,XZ2,IOUI) C IF (IOUI.EQ.0) THEN C XXD1 = SQRT((XXA-XX1)**2+(XYA-XY1)**2+(XZA-XZ1)**2) XXD2 = SQRT((XXA-XX2)**2+(XYA-XY2)**2+(XZA-XZ2)**2) XXL1= XL -XXD1 XXL2= XL -XXD2 C C XXDi : DISTANCE DE A AU PT M DE CALCUL DU DEPLACEMENT C * Z10X ,Z11X ,Z1,Z2,Z30X ,Z31X ,Z32X ,Z33X ,Z34X ,ZZ3, * Z40X ,Z41X ,Z42X ,Z43X ,Z44X ,ZZ4) C * Z10XL,Z11XL,Z1,Z2,Z30XL,Z31XL,Z32XL,Z33XL,Z34XL,ZZ3, * Z40XL,Z41XL,Z42XL,Z43XL,Z44XL,ZZ4) C ZUX1 = ZU2(19)*Z10XL-ZU2(13)*Z11XL-ZU2(7)*Z10X-ZU2(1)*Z11X C ZUY1 =-(ZZ3*Z31X -Z33X )*ZU2(2) - (ZZ3*Z30X -Z32X )*ZU2(6) * + Z31X *ZU2(12) + Z30X *ZU2(8) * -(ZZ3*Z31XL-Z33XL)*ZU2(14)+(ZZ3*Z30XL-Z32XL)*ZU2(18) * + Z31XL*ZU2(24) - Z30XL*ZU2(20) C ZUZ1 =-(ZZ4*Z41X -Z43X )*ZU2(3) - (ZZ4*Z40X -Z42X )*ZU2(5) * + Z41X *ZU2(11) + Z40X *ZU2(9) * -(ZZ4*Z41XL-Z43XL)*ZU2(15)+(ZZ4*Z40XL-Z42XL)*ZU2(17) * + Z41XL*ZU2(23) - Z40XL*ZU2(21) C C ZUX1 = ZUX1 * ZD(1) ZUY1 = ZUY1 * ZD(2) ZUZ1 = ZUZ1 * ZD(3) C ZX1 = R1(1,1)*ZUX1 + R1(1,2)*ZUY1 + R1(1,3)*ZUZ1 ZY1 = R1(2,1)*ZUX1 + R1(2,2)*ZUY1 + R1(2,3)*ZUZ1 ZZ1 = R1(3,1)*ZUX1 + R1(3,2)*ZUY1 + R1(3,3)*ZUZ1 C * Z10X ,Z11X ,Z1,Z2,Z30X ,Z31X ,Z32X ,Z33X ,Z34X ,ZZ3, * Z40X ,Z41X ,Z42X ,Z43X ,Z44X ,ZZ4) C * Z10XL,Z11XL,Z1,Z2,Z30XL,Z31XL,Z32XL,Z33XL,Z34XL,ZZ3, * Z40XL,Z41XL,Z42XL,Z43XL,Z44XL,ZZ4) C C ZUX2 = ZU2(19)*Z10XL-ZU2(13)*Z11XL-ZU2(7)*Z10X-ZU2(1)*Z11X C ZUY2 =-(ZZ3*Z31X -Z33X )*ZU2(2) - (ZZ3*Z30X -Z32X )*ZU2(6) * + Z31X *ZU2(12) + Z30X *ZU2(8) * -(ZZ3*Z31XL-Z33XL)*ZU2(14)+(ZZ3*Z30XL-Z32XL)*ZU2(18) * + Z31XL*ZU2(24) - Z30XL*ZU2(20) C ZUZ2 =-(ZZ4*Z41X -Z43X )*ZU2(3) - (ZZ4*Z40X -Z42X )*ZU2(5) * + Z41X *ZU2(11) + Z40X *ZU2(9) * -(ZZ4*Z41XL-Z43XL)*ZU2(15)+(ZZ4*Z40XL-Z42XL)*ZU2(17) * + Z41XL*ZU2(23) - Z40XL*ZU2(21) C C ZUX2 = ZUX2 * ZD(1) ZUY2 = ZUY2 * ZD(2) ZUZ2 = ZUZ2 * ZD(3) C C ZX2 = R1(1,1)*ZUX2 + R1(1,2)*ZUY2 + R1(1,3)*ZUZ2 ZY2 = R1(2,1)*ZUX2 + R1(2,2)*ZUY2 + R1(2,3)*ZUZ2 ZZ2 = R1(3,1)*ZUX2 + R1(3,2)*ZUY2 + R1(3,3)*ZUZ2 C C PRZX1 = ZX1 PIZX1 = ZX1*(0.D0,-1.D0) PRZY1 = ZY1 PIZY1 = ZY1*(0.D0,-1.D0) PRZZ1 = ZZ1 PIZZ1 = ZZ1*(0.D0,-1.D0) PRZX2 = ZX2 PIZX2 = ZX2*(0.D0,-1.D0) PRZY2 = ZY2 PIZY2 = ZY2*(0.D0,-1.D0) PRZZ2 = ZZ2 PIZZ2 = ZZ2*(0.D0,-1.D0) C IF (ABS(PRZX1).LT.1.E-38.AND.ABS(PIZX1).LT.1.E-38) THEN PPX1 = 0.D0 ELSE PPX1 = ATAN2(PIZX1,PRZX1)*180.D0/XPI END IF C IF (ABS(PRZY1).LT.1.E-38.AND.ABS(PIZY1).LT.1.E-38) THEN PPY1 = 0.D0 ELSE PPY1 = ATAN2(PIZY1,PRZY1)*180.D0/XPI END IF C IF (ABS(PRZZ1).LT.1.E-38.AND.ABS(PIZZ1).LT.1.E-38) THEN PPZ1 = 0.D0 ELSE PPZ1 = ATAN2(PIZZ1,PRZZ1)*180.D0/XPI END IF C C IF (ABS(PRZX2).LT.1.E-38.AND.ABS(PIZX2).LT.1.E-38) THEN PPX2 = 0.D0 ELSE PPX2 = ATAN2(PIZX2,PRZX2)*180.D0/XPI END IF C IF (ABS(PRZY2).LT.1.E-38.AND.ABS(PIZY2).LT.1.E-38) THEN PPY2 = 0.D0 ELSE PPY2 = ATAN2(PIZY2,PRZY2)*180.D0/XPI END IF C IF (ABS(PRZZ2).LT.1.E-38.AND.ABS(PIZZ2).LT.1.E-38) THEN PPZ2 = 0.D0 ELSE PPZ2 = ATAN2(PIZZ2,PRZZ2)*180.D0/XPI END IF C VALDE1(1,IN,1) = ABS(ZX1) VALDE1(1,IN,2) = ABS(ZY1) VALDE1(1,IN,3) = ABS(ZZ1) VALDE1(2,IN,1) = ABS(ZX2) VALDE1(2,IN,2) = ABS(ZY2) VALDE1(2,IN,3) = ABS(ZZ2) C VALDE2(1,IN,1) = PPX1 VALDE2(1,IN,2) = PPY1 VALDE2(1,IN,3) = PPZ1 VALDE2(2,IN,1) = PPX2 VALDE2(2,IN,2) = PPY2 VALDE2(2,IN,3) = PPZ2 C C END IF C 110 CONTINUE C 100 CONTINUE C END
© Cast3M 2003 - Tous droits réservés.
Mentions légales