1 : C CALJQB SOURCE CHAT 05/01/12 21:46:53 5004 2 : SUBROUTINE CALJQB(XYZ,P,IES,NP) 3 : C*********************************************************************** 4 : C CE SP CALCULE 5 : C LA MATRICE DE ROTATION DU REPERE GLOBALE VERS LE REPERE LOCAL 6 : C DEFINI PAR DEUX OU TROIS POINTS PRIS DANS XYZ SUIVANT QU'ON EST 7 : C EN 2D OU EN 3D 8 : C ON PREND P1 P2 ET PNP 9 : C 10 : C U TEL QUE T SOIT DIRIGE SUIVANT P1P2 V TOURNE VERS 11 : C . .V P1PNP ET U = T VECTORIEL V 12 : C . . 13 : C . . __ __ 14 : C (P1). . . . .T (P2) | tx ty tz | 15 : C | | 16 : C ON A ALORS WL= P WG P = | vx vy vz | 17 : C | | 18 : C | ux uy uz | 19 : C |__ __| 20 : C*********************************************************************** 21 : IMPLICIT INTEGER(I-N) 22 : IMPLICIT REAL*8 (A-H,O-Z) 23 : 24 : REAL*8 XYZ(IES,NP),P(IES,IES) 25 : 26 : C*** 27 : 28 : IF(IES.EQ.2)GO TO 200 29 : 30 : TX=XYZ(1,2)-XYZ(1,1) 31 : TY=XYZ(2,2)-XYZ(2,1) 32 : TZ=XYZ(3,2)-XYZ(3,1) 33 : TT=TX*TX+TY*TY+TZ*TZ 34 : TT=1.D0/SQRT(TT) 35 : TX=TX*TT 36 : TY=TY*TT 37 : TZ=TZ*TT 38 : C WRITE(6,*)'TX= TY= TZ= TT=',TX,TY,TZ,TT 39 : UX=(XYZ(2,NP)-XYZ(2,1))*TZ-(XYZ(3,NP)-XYZ(3,1))*TY 40 : UY=(XYZ(3,NP)-XYZ(3,1))*TX-(XYZ(1,NP)-XYZ(1,1))*TZ 41 : UZ=(XYZ(1,NP)-XYZ(1,1))*TY-(XYZ(2,NP)-XYZ(2,1))*TX 42 : UU=UX*UX+UY*UY+UZ*UZ 43 : UU=1.D0/SQRT(UU) 44 : UX=-UX*UU 45 : UY=-UY*UU 46 : UZ=-UZ*UU 47 : C WRITE(6,*)'UX,UY,UZ,UU',UX,UY,UZ,UU 48 : VX=+UY*TZ-UZ*TY 49 : VY=+UZ*TX-UX*TZ 50 : VZ=+UX*TY-UY*TX 51 : C WRITE(6,*)'VX= VY= VZ=',VX,VY,VZ 52 : P(1,1)=TX 53 : P(1,2)=TY 54 : P(1,3)=TZ 55 : P(2,1)=VX 56 : P(2,2)=VY 57 : P(2,3)=VZ 58 : P(3,1)=UX 59 : P(3,2)=UY 60 : P(3,3)=UZ 61 : C 62 : RETURN 63 : 64 : 200 CONTINUE 65 : 66 : TX=XYZ(1,2)-XYZ(1,1) 67 : TY=XYZ(2,2)-XYZ(2,1) 68 : TT=TX*TX+TY*TY 69 : TT=SQRT(TT) 70 : TX=TX/TT 71 : TY=TY/TT 72 : 73 : VX=-TY 74 : VY= TX 75 : 76 : P(1,1)=TX 77 : P(1,2)=TY 78 : P(2,1)=VX 79 : P(2,2)=VY 80 : 81 : RETURN 82 : END 83 :
© Cast3M 2003 - All rights reserved.
Disclaimer