Télécharger inte3p.eso

Retour à la liste

Numérotation des lignes :

  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
  55. CALL PROJ(P0,M0,M1,M2,M3,DIM2)
  56. C
  57. C-----------------------------------------------------------------------
  58. C---------- CAS OU M1,2,3 GENERENT UN PLAN -----------------------------
  59. C-----------------------------------------------------------------------
  60. C
  61. IF (DIM2.EQV..TRUE.) THEN
  62. C
  63. T0=P0(1)
  64. TP0=P0(2)
  65. ZA0=P0(3)
  66. * write (*,2) P0(1),P0(2),P0(3)
  67. *2 format ('P0(1) = ',f8.2,' P0(2) = ',f8.4,' P0(3) = ',f8.4)
  68. C
  69. A(1,1)=T0-T1
  70. A(1,2)=T0-T2
  71. A(1,3)=T0-T3
  72. A(2,1)=TP0-TP1
  73. A(2,2)=TP0-TP2
  74. A(2,3)=TP0-TP3
  75. A(3,1)=ZA0-ZA1
  76. A(3,2)=ZA0-ZA2
  77. A(3,3)=ZA0-ZA3
  78. C
  79. C---------- RESOLUTION DE AX = 0 ---------------------------------------
  80. C
  81. CALL EQHOM3 (X,A)
  82. C
  83. SLANDA = X(1)+X(2)+X(3)
  84. C
  85. C---------- CONTROLE, NORMALEMENT INUTILE, POUR VERIFIER M1,2,3 = PLAN -
  86. C
  87. IF (ABS(SLANDA).LT.1.D-12) THEN
  88. DIM2=.FALSE.
  89. ELSE
  90. COEF2(1)=X(1)/SLANDA
  91. COEF2(2)=X(2)/SLANDA
  92. COEF2(3)=X(3)/SLANDA
  93. C
  94. ENDIF
  95. ENDIF
  96. C
  97. C-----------------------------------------------------------------------
  98. C---------- CAS OU M1,2,3 GENERENT UNE DROITE --------------------------
  99. C-----------------------------------------------------------------------
  100. C
  101. IF (DIM2.EQV..FALSE.) THEN
  102. DIM1=.TRUE.
  103. C
  104. C > LE PROJETE P0 DE M0 SUR LA DROITE M1,2,3 A POUR COORDONNEES
  105. C > BARYCENTRIQUES (M1,1.-SA2) (M2,SA2) OU SA2 = M1M0.M1M2
  106. C
  107. SA2=(M0(1)-M1(1))*(M2(1)-M1(1))
  108. . +(M0(2)-M1(2))*(M2(2)-M1(2))
  109. . +(M0(3)-M1(3))*(M2(3)-M1(3))
  110. C
  111. IF (SA2.GT.0..AND.SA2.LE.1.) THEN
  112. COEF2(1)=1.-SA2
  113. COEF2(2)=SA2
  114. COEF2(3)=0.
  115. ELSE
  116. C
  117. C > LE PROJETE P0 DE M0 SUR LA DROITE M1,2,3 A POUR COORDONNEES
  118. C > BARYCENTRIQUES (M1,1.-SA3) (M3,SA3) OU SA3 = M1M0.M1M3
  119. C
  120. SA3=(M0(1)-M1(1))*(M3(1)-M1(1))
  121. . +(M0(2)-M1(2))*(M3(2)-M1(2))
  122. . +(M0(3)-M1(3))*(M3(3)-M1(3))
  123. COEF2(1)=1.-SA3
  124. COEF2(2)=0.
  125. COEF2(3)=SA3
  126. ENDIF
  127. ENDIF
  128. C
  129. RETURN
  130. END
  131.  
  132.  
  133.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales