Télécharger courb3.eso

Retour à la liste

Numérotation des lignes :

courb3
  1. C COURB3 SOURCE PV 07/11/23 21:16:08 5978
  2. SUBROUTINE COURB3 (MCOURB,ALONG,MABCUR)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. ************************************************************************
  6. *
  7. * C O U R B 3
  8. * -----------
  9. *
  10. * FONCTION:
  11. * ---------
  12. *
  13. * CREATION D'ABSCISSES CURVILIGNES EN UN NOMBRE DISCRET DE POINTS
  14. * DE LA COURBE POLYNOMIALE, ET DE SA LONGUEUR TOTALE APPROXIMATIVE.
  15. *
  16. * MODULES UTILISES:
  17. * -----------------
  18. *
  19.  
  20. -INC PPARAM
  21. -INC CCOPTIO
  22. -INC SMCOORD
  23. -INC TMCOURB
  24. *
  25. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN)
  26. * -----------
  27. *
  28. * MCOURB (E) SEGMENT ACTIF.
  29. * +IDIM (E) VOIR LE COMMUN "COPTIO".
  30. * +MCOORD (E) SEGMENT ACTIF.
  31. * ALONG (S) LONGUEUR APPROXIMATIVE DE LA COURBE POLYNOMIALE.
  32. * MABCUR (S) POINTEUR DE SEGMENT CONTENANT LES ABSCISSES
  33. * CURVILIGNES EN UN NOMBRE FINI DE POINTS DE LA COURBE
  34. * (DONT LES POINTS EXTREMITES).
  35. * SEGMENT LAISSE DANS L'ETAT ACTIF.
  36. *
  37. SEGMENT,MABCUR
  38. REAL*8 ABCURV(NPDISC)
  39. ENDSEGMENT
  40. *
  41. * VARIABLES:
  42. * ----------
  43. *
  44. REAL*8 U
  45. *
  46. * CONSTANTES:
  47. * -----------
  48. *
  49. * NPDISC NOMBRE DE POINTS DE DISCRETISATION DE LA COURBE.
  50. *
  51. INTEGER NPDISC,NPDIS1
  52. PARAMETER (NPDISC = 101, NPDIS1 = NPDISC-1)
  53. *
  54. * FONCTIONS:
  55. * ----------
  56. *
  57. REAL*8 POLYNO
  58. *
  59. * REMARQUES:
  60. * ----------
  61. *
  62. * LE REMPLISSAGE DE "ABCURV" NE S'IMPOSE QUE POUR L'OPTION
  63. * "REGULIER" DE L'OPERATEUR "COURBE".
  64. *
  65. * AUTEUR, DATE DE CREATION:
  66. * -------------------------
  67. *
  68. * PASCAL MANIGOT 10 SEPTEMBRE 1986
  69. * P.M. 24/02/87 : REMODELAGE, AVEC UN NOUVEAU SEGMENT "MCOURB".
  70. *
  71. * LANGAGE:
  72. * --------
  73. *
  74. * ESOPE + FORTRAN77 + EXTENSION: DECLARATION "REAL*8".
  75. *
  76. ************************************************************************
  77. *
  78. SEGINI,MABCUR
  79. ABCURV(1) = 0.
  80. U = U1COU
  81. DU = (U2COU - U1COU) / REAL(NPDIS1)
  82. IP = (PT1COU - 1) * (IDIM + 1)
  83. X3COU = XCOOR(IP+1)
  84. Y3COU = XCOOR(IP+2)
  85. Z3COU = XCOOR(IP+3)
  86. IP = (PT2COU - 1) * (IDIM + 1)
  87. X2COU = XCOOR(IP+1)
  88. Y2COU = XCOOR(IP+2)
  89. Z2COU = XCOOR(IP+3)
  90. *
  91. MCOFCO = ICOFCO
  92. SEGACT,MCOFCO
  93. IF (IDIM .EQ. 3) THEN
  94. DO 100 IB=2,NPDIS1
  95. U = U + DU
  96. X4COU = POLYNO (COFCOU(1,1),ND1COU,1,U)
  97. Y4COU = POLYNO (COFCOU(1,2),ND1COU,1,U)
  98. Z4COU = POLYNO (COFCOU(1,3),ND1COU,1,U)
  99. ABCURV(IB) = ABCURV(IB-1) + SQRT((X4COU-X3COU)**2
  100. & + (Y4COU-Y3COU)**2 + (Z4COU-Z3COU)**2)
  101. X3COU = X4COU
  102. Y3COU = Y4COU
  103. Z3COU = Z4COU
  104. 100 CONTINUE
  105. * END DO
  106. ALONG = ABCURV(NPDIS1) + SQRT((X2COU-X3COU)**2
  107. & + (Y2COU-Y3COU)**2 + (Z2COU-Z3COU)**2)
  108. ELSE
  109. DO 110 IB=2,NPDIS1
  110. U = U + DU
  111. X4COU = POLYNO (COFCOU(1,1),ND1COU,1,U)
  112. Y4COU = POLYNO (COFCOU(1,2),ND1COU,1,U)
  113. ABCURV(IB) = ABCURV(IB-1) + SQRT((X4COU-X3COU)**2
  114. & + (Y4COU-Y3COU)**2)
  115. X3COU = X4COU
  116. Y3COU = Y4COU
  117. 110 CONTINUE
  118. * END DO
  119. ALONG = ABCURV(NPDIS1) + SQRT((X2COU-X3COU)**2
  120. & + (Y2COU-Y3COU)**2)
  121. END IF
  122. ABCURV(NPDISC) = ALONG
  123. *
  124. SEGDES,MCOFCO
  125. *
  126. END
  127.  
  128.  
  129.  

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