1 : C ELLP07 SOURCE CHAT 05/01/12 23:34:58 5004 2 : SUBROUTINE ELLP07(XA,YA,ZA,XB,YB,ZB,X1,Y1,Z1,X2,Y2,Z2,IOUI) 3 : C 4 : IMPLICIT INTEGER(I-N) 5 : IMPLICIT REAL*8 (A-H,O-Z) 6 : C 7 : C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 8 : C 9 : C OPERATEUR ELFE LAPLACE POUTRE 10 : C 11 : C REGARDE SI LE SEGMENT <1-2> APPARTIENT AU SEGMENT12 : C 13 : C PARAMETRES : 14 : C 15 : C A ( XA,YA,ZA ) B ( XB,YB,ZB ) 1 ( X1,Y1,Z1 ) 2 ( X2,Y2,Z2 ) 16 : C 17 : C 18 : C SORTIES : 19 : C 20 : C IOUI : = 1 SI LA CONDITION EST VERIFIEE 21 : C = 0 SI LA CONDITION N'EST PAS VERIFIEE 22 : C 23 : C 24 : C 25 : C AUTEUR : SAINT-DIZIER 26 : C DATE : 20 JUILLET 1990 27 : C 28 : C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 29 : C 30 : IOUI = 0 31 : C 32 : C -- VECTEUR AB ET LONGUEUR DE LE POUTRE 33 : C 34 : XBA = XB - XA 35 : YBA = YB - YA 36 : ZBA = ZB - ZA 37 : XL = SQRT ( XBA*XBA + YBA*YBA + ZBA*ZBA) 38 : EPS0 = 1.E-15 39 : IF (XL.LT.EPS0) RETURN 40 : C 41 : C-- VECTEURS AM1, AM2, BM1, BM2 42 : C 43 : X1A = X1 - XA 44 : Y1A = Y1 - YA 45 : Z1A = Z1 - ZA 46 : XL1A = SQRT ( X1A*X1A + Y1A*Y1A + Z1A*Z1A ) 47 : C 48 : X2A = X2 - XA 49 : Y2A = Y2 - YA 50 : Z2A = Z2 - ZA 51 : XL2A = SQRT ( X2A*X2A + Y2A*Y2A + Z2A*Z2A ) 52 : C 53 : X1B = X1 - XB 54 : Y1B = Y1 - YB 55 : Z1B = Z1 - ZB 56 : XL1B = SQRT ( X1B*X1B + Y1B*Y1B + Z1B*Z1B ) 57 : C 58 : X2B = X2 - XB 59 : Y2B = Y2 - YB 60 : Z2B = Z2 - ZB 61 : XL2B = SQRT ( X2B*X2B + Y2B*Y2B + Z2B*Z2B ) 62 : C 63 : C -- PRODUITS VECTORIELS AM1^AB ET AM2^AB ET NORMES ASSOCIEES 64 : C 65 : XVECT1 = ZBA*Y1A - YBA*Z1A 66 : YVECT1 = XBA*Z1A - ZBA*X1A 67 : ZVECT1 = YBA*X1A - XBA*Y1A 68 : XNORM1 = SQRT ( XVECT1*XVECT1 + YVECT1*YVECT1 + ZVECT1*ZVECT1 ) 69 : C 70 : XVECT2 = ZBA*Y2A - YBA*Z2A 71 : YVECT2 = XBA*Z2A - ZBA*X2A 72 : ZVECT2 = YBA*X2A - XBA*Y2A 73 : XNORM2 = SQRT ( XVECT2*XVECT2 + YVECT2*YVECT2 + ZVECT2*ZVECT2 ) 74 : C 75 : C -- PRODUITS SCALAIRES AM1.BM1 ET AM2.BM2 76 : C 77 : XP1 = X1A*X1B + Y1A*Y1B + Z1A*Z1B 78 : XP2 = X2A*X2B + Y2A*Y2B + Z2A*Z2B 79 : C 80 : IF (((XL1A.LT.EPS0).AND.(XP2.GT.0.)).OR. 81 : * ((XL1B.LT.EPS0).AND.(XP2.GT.0.))) RETURN 82 : C 83 : IF (((XL2A.LT.EPS0).AND.(XP1.GT.0.)).OR. 84 : * ((XL2B.LT.EPS0).AND.(XP1.GT.0.))) RETURN 85 : C 86 : IF (((XL1A.LT.EPS0).AND.(XP2.LT.0.)).OR. 87 : * ((XL1B.LT.EPS0).AND.(XP2.LT.0.))) THEN 88 : IOUI = 1 89 : RETURN 90 : ENDIF 91 : C 92 : IF (((XL2A.LT.EPS0).AND.(XP1.LT.0.)).OR. 93 : * ((XL2B.LT.EPS0).AND.(XP1.LT.0.))) THEN 94 : IOUI = 1 95 : RETURN 96 : ENDIF 97 : C 98 : C -- NORMALISATION (REND LES CRITERES INDEPENDANTS DES DIMENSIONS 99 : C DE LA POUTRE) 100 : C 101 : XNORM1 = XNORM1 / (XL*XL1A) 102 : XNORM2 = XNORM2 / (XL*XL2A) 103 : XP1 = XP1 / (XL*XL) 104 : XP2 = XP2 / (XL*XL) 105 : C 106 : C -- CRITERES GEOMETRIQUES 107 : C 108 : EPS1 = 8.7E-3 109 : EPS2 = 1.E-3 110 : C 111 : C -- IOUI VAUT 1 SI LES VECTEURS SONT COLINEAIRES (M1 ET M2 APPARTIENNEN 112 : C -- A LA DROITE (AB)), ET SI LES PRODUITS SCALAIRES SONT <0 (APPARTE- 113 : C -- NANCE AU SEGMENT AB) 114 : C 115 : IF (XNORM1.LT.EPS1)THEN 116 : IF (XNORM2.LT.EPS1) THEN 117 : IF (XP1.LT.EPS2) THEN 118 : IF (XP2.LT.EPS2) IOUI=1 119 : ENDIF 120 : ENDIF 121 : ENDIF 122 : C 123 : END 124 :
© Cast3M 2003 - All rights reserved.
Disclaimer