1 : C INTE3P SOURCE CHAT 05/01/13 00:39:59 5004 2 : C SOURCE MARTINEZ (MODIFIE LE 3/07/1998) 3 : C 4 : C======================================================================= 5 : C 6 : SUBROUTINE INTE3P(T0,TP0,ZA0,T1,TP1,ZA1,T2,TP2,ZA2,T3,TP3,ZA3, 7 : & COEF2,DIM1,DIM2,DIM3) 8 : C 9 : C======================================================================= 10 : C 11 : C Calcul de transformations de phases 12 : C appelee par INTERV 13 : C 14 : C interpolation lineaire (= calcul de coordonnees barycentriques) 15 : C dans un plan 16 : C 17 : C T0,TP0,ZA0 point a interpoler 18 : C T1,TP1,ZA1 1er point d'interpolation 19 : C T2,TP2,ZA2 2eme point d'interpolation 20 : C T3,TP3,ZA3 3eme point d'interpolation 21 : C COEF2 coef d'interpolation trouves 22 : C DIM1,DIM2,DIM3 dimensions de l'espace d'interpolation 23 : C 24 : C routines appelees 25 : C PROJ projection 26 : C EQHOM3 resolution d'une equation sans second membre 27 : C 28 : C======================================================================= 29 : C 30 : IMPLICIT INTEGER(I-N) 31 : IMPLICIT REAL*8 (A-H,O-Z) 32 : REAL*8 COEF2(4),A(3,3),X(3) 33 : REAL*8 M0(3),M1(3),M2(3),M3(3),P0(3) 34 : LOGICAL DIM1,DIM2,DIM3 35 : C 36 : DIM3=.FALSE. 37 : DIM2=.FALSE. 38 : DIM1=.FALSE. 39 : C 40 : M0(1)=T0 41 : M0(2)=TP0 42 : M0(3)=ZA0 43 : M1(1)=T1 44 : M1(2)=TP1 45 : M1(3)=ZA1 46 : M2(1)=T2 47 : M2(2)=TP2 48 : M2(3)=ZA2 49 : M3(1)=T3 50 : M3(2)=TP3 51 : M3(3)=ZA3 52 : C 53 : C---------- PROJECTION DE M0 SUR LE PLAN M1,2,3 S'IL EXISTE ------------ 54 : C 54 : CALL PROJ(P0,M0,M1,M2,M3,DIM2) 55 : C 56 : C----------------------------------------------------------------------- 57 : C---------- CAS OU M1,2,3 GENERENT UN PLAN ----------------------------- 58 : C----------------------------------------------------------------------- 59 : C 60 : IF (DIM2.EQV..TRUE.) THEN 61 : C 62 : T0=P0(1) 63 : TP0=P0(2) 64 : ZA0=P0(3) 65 : * write (*,2) P0(1),P0(2),P0(3) 66 : *2 format ('P0(1) = ',f8.2,' P0(2) = ',f8.4,' P0(3) = ',f8.4) 67 : C 68 : A(1,1)=T0-T1 69 : A(1,2)=T0-T2 70 : A(1,3)=T0-T3 71 : A(2,1)=TP0-TP1 72 : A(2,2)=TP0-TP2 73 : A(2,3)=TP0-TP3 74 : A(3,1)=ZA0-ZA1 75 : A(3,2)=ZA0-ZA2 76 : A(3,3)=ZA0-ZA3 77 : C 78 : C---------- RESOLUTION DE AX = 0 --------------------------------------- 79 : C 79 : CALL EQHOM3 (X,A) 80 : C 81 : SLANDA = X(1)+X(2)+X(3) 82 : C 83 : C---------- CONTROLE, NORMALEMENT INUTILE, POUR VERIFIER M1,2,3 = PLAN - 84 : C 85 : IF (ABS(SLANDA).LT.1.D-12) THEN 86 : DIM2=.FALSE. 87 : ELSE 88 : COEF2(1)=X(1)/SLANDA 89 : COEF2(2)=X(2)/SLANDA 90 : COEF2(3)=X(3)/SLANDA 91 : C 92 : ENDIF 93 : ENDIF 94 : C 95 : C----------------------------------------------------------------------- 96 : C---------- CAS OU M1,2,3 GENERENT UNE DROITE -------------------------- 97 : C----------------------------------------------------------------------- 98 : C 99 : IF (DIM2.EQV..FALSE.) THEN 100 : DIM1=.TRUE. 101 : C 102 : C > LE PROJETE P0 DE M0 SUR LA DROITE M1,2,3 A POUR COORDONNEES 103 : C > BARYCENTRIQUES (M1,1.-SA2) (M2,SA2) OU SA2 = M1M0.M1M2 104 : C 105 : SA2=(M0(1)-M1(1))*(M2(1)-M1(1)) 106 : . +(M0(2)-M1(2))*(M2(2)-M1(2)) 107 : . +(M0(3)-M1(3))*(M2(3)-M1(3)) 108 : C 109 : IF (SA2.GT.0..AND.SA2.LE.1.) THEN 110 : COEF2(1)=1.-SA2 111 : COEF2(2)=SA2 112 : COEF2(3)=0. 113 : ELSE 114 : C 115 : C > LE PROJETE P0 DE M0 SUR LA DROITE M1,2,3 A POUR COORDONNEES 116 : C > BARYCENTRIQUES (M1,1.-SA3) (M3,SA3) OU SA3 = M1M0.M1M3 117 : C 118 : SA3=(M0(1)-M1(1))*(M3(1)-M1(1)) 119 : . +(M0(2)-M1(2))*(M3(2)-M1(2)) 120 : . +(M0(3)-M1(3))*(M3(3)-M1(3)) 121 : COEF2(1)=1.-SA3 122 : COEF2(2)=0. 123 : COEF2(3)=SA3 124 : ENDIF 125 : ENDIF 126 : C 127 : RETURN 128 : END 129 : 130 :
© Cast3M 2003 - All rights reserved.
Disclaimer