Télécharger surfp9.eso

Retour à la liste

Numérotation des lignes :

surfp9
  1. C SURFP9 SOURCE BP208322 16/11/18 21:21:25 9177
  2. SUBROUTINE SURFP9 (NUMPT,U,V,DUV,msurfp)
  3. ************************************************************************
  4. *
  5. * S U R F P 9
  6. * -----------
  7. *
  8. * FONCTION:
  9. * ---------
  10. *
  11. * REMPLIR LE TABLEAU DES COORDONNEES POUR UN POINT D'UNE SURFACE
  12. * PARAMETREE.
  13. *
  14. * MODULES UTILISES:
  15. * -----------------
  16. *
  17. IMPLICIT INTEGER(I-N)
  18. IMPLICIT real*8 (a-h,o-z)
  19.  
  20. -INC PPARAM
  21. -INC CCOPTIO
  22. -INC CCGEOME
  23. -INC SMCOORD
  24. -INC TMSURFP
  25. *
  26. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN)
  27. * -----------
  28. *
  29. * NUMPT (E) NUMERO DU POINT.
  30. * U,V (E) COORDONNEES PARAMETRIQUES DU POINT.
  31. * DUV (E) SI < 0, EGAL A L'OPPOSEE DE LA DENSITE DU POINT EN
  32. * UNITES PARAMETRIQUES.
  33. * SI = 0, ON PRENDRA LA DENSITE COURANTE.
  34. * SI > 0, EGAL A LA DENSITE EN UNITES REELLES.
  35. * +MSURFP (E) POINTEUR DE SURFACE PARAMETREE.
  36. * CE SEGMENT EST SUPPOSE ACTIF.
  37. * LE SEGMENT "MCOFSU" DONT "MSURFP" POSSEDE LE POINTEUR
  38. * EST EGALEMENT SUPPOSE ACTIF.
  39. * +DENSIT (E) VOIR LE COMMUN "CGEOME".
  40. * +IDIM (E) VOIR LE COMMUN "COPTIO".
  41. * +MCOORD (E) CE SEGMENT EST SUPPOSE ACTIF ET DE LONGUEUR
  42. * SUFFISANTE.
  43. * (S) COMPLETION DU TABLEAU "XCOOR".
  44. *
  45. INTEGER NUMPT
  46. REAL*8 U,V,DUV
  47.  
  48. *
  49. * VARIABLES:
  50. * ----------
  51. *
  52. REAL*8 D1,D2,D3,D4
  53. REAL*8 U1,V1,X,Y,Z,X1,Y1,Z1
  54. *
  55. * AUTEUR, DATE DE CREATION:
  56. * -------------------------
  57. *
  58. * PASCAL MANIGOT 3 MARS 1987
  59. *
  60. * LANGAGE:
  61. * --------
  62. *
  63. * ESOPE77 FORTRAN77 + EXTENSION: DECLARATION "REAL*8".
  64. *
  65. ************************************************************************
  66. *
  67. NUMPT1 = NUMPT - 1
  68. IDIMP1 = IDIM + 1
  69. *
  70. * COORDONNEES:
  71. *
  72. CALL SURFP0 (U,V, X,Y,Z,msurfp)
  73. XCOOR(NUMPT1*IDIMP1+1) = X
  74. XCOOR(NUMPT1*IDIMP1+2) = Y
  75. IF (IDIM .EQ. 3) XCOOR(NUMPT1*IDIMP1+3) = Z
  76. *
  77. * DENSITE:
  78. *
  79. IF (DUV .EQ. 0.D0) THEN
  80. XCOOR(NUMPT*IDIMP1) = DENSIT
  81. ELSE IF (DUV .GT. 0.D0) THEN
  82. XCOOR(NUMPT*IDIMP1) = DUV
  83. ELSE
  84. * LA DENSITE EST DETERMINEE EN CALCULANT LES DISTANCES REELLES DU
  85. * POINT CONSIDERE AVEC LES POINTS (U+-DUV,V) ET (U,V+-DUV).
  86. * C'EST LOURD MAIS C'EST SUR.
  87. U1 = U - DUV
  88. V1 = V
  89. CALL SURFP0 (U1,V1, X1,Y1,Z1,msurfp)
  90. D1 = (X1-X)**2 + (Y1-Y)**2 + (Z1-Z)**2
  91. D1 = SQRT(D1)
  92. U1 = U + DUV
  93. V1 = V
  94. CALL SURFP0 (U1,V1, X1,Y1,Z1,msurfp)
  95. D2 = (X1-X)**2 + (Y1-Y)**2 + (Z1-Z)**2
  96. D2 = SQRT(D2)
  97. U1 = U
  98. V1 = V - DUV
  99. CALL SURFP0 (U1,V1, X1,Y1,Z1,msurfp)
  100. D3 = (X1-X)**2 + (Y1-Y)**2 + (Z1-Z)**2
  101. D3 = SQRT(D3)
  102. U1 = U
  103. V1 = V + DUV
  104. CALL SURFP0 (U1,V1, X1,Y1,Z1,msurfp)
  105. D4 = (X1-X)**2 + (Y1-Y)**2 + (Z1-Z)**2
  106. D4 = SQRT(D4)
  107. XCOOR(NUMPT*IDIMP1) = (D1 + D2 + D3 + D4) / 4.
  108. END IF
  109. *
  110. END
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  

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