Télécharger courb4.eso

Retour à la liste

Numérotation des lignes :

courb4
  1. C COURB4 SOURCE PV 20/03/24 21:16:21 10554
  2. SUBROUTINE COURB4 (MCOURB,MABCUR,MABSCI,ALONG)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. ************************************************************************
  6. *
  7. * C O U R B 4
  8. * -----------
  9. *
  10. * FONCTION:
  11. * ---------
  12. *
  13. * DETERMINATION, A PARTIR D'UNE SUITE DISCRETE D'ABSCISSES
  14. * CURVILIGNES LE LONG DE LA COURBE POLYNOMIALE, DES COORDONNEES
  15. * DE POINTS A DES ABSCISSES CURVILIGNES DONNEES (PAR INTERPOLATION
  16. * LINEAIRE).
  17. *
  18. * MODULES UTILISES:
  19. * -----------------
  20. *
  21.  
  22. -INC PPARAM
  23. -INC CCOPTIO
  24. -INC CCGEOME
  25. -INC CCREEL
  26. -INC SMCOORD
  27. -INC TMCOURB
  28. *
  29. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN)
  30. * -----------
  31. *
  32. * MCOURB (E) SEGMENT ACTIF.
  33. * (S) ETENDU EN SORTIE (TABLEAU "UCOU" REMPLI).
  34. * MABCUR (E) SEGMENT ACTIF DEFINI DANS LE S-P "COURB3".
  35. * MABSCI (E) SEGMENT ACTIF DEFINI DANS LE S-P "COURB2".
  36. * ICI, IL S'AGIT D'ABSCISSES CURVILIGNES.
  37. * ALONG (E) LONGUEUR APPROXIMATIVE DE LA COURBE POLYNOMIALE.
  38. * +IDIM (E) VOIR LE COMMUN "COPTIO".
  39. * +ILCOUR (E) VOIR LE COMMUN "CGEOME".
  40. * +XPETIT (E) VOIR LE COMMUN "CREEL".
  41. * +MCOORD (E) SEGMENT ACTIF.
  42. * (S) COMPLETE EN SORTIE.
  43. *
  44. SEGMENT,MABCUR
  45. REAL*8 ABCURV(NPDISC)
  46. ENDSEGMENT
  47. SEGMENT,MABSCI
  48. REAL*8 ABSCIS(NPOIN)
  49. ENDSEGMENT
  50. *
  51. * VARIABLES:
  52. * ----------
  53. *
  54. * COFDEN = FACTEUR CORRECTIF DE LA DENSITE LOCALE CALCULEE, SELON
  55. * LE TYPE D'ELEMENT (SEG2 OU SEG3).
  56. *
  57. REAL*8 COFDEN
  58. REAL*8 U
  59. *
  60. * FONCTIONS:
  61. * ----------
  62. *
  63. REAL*8 POLYNO
  64. *
  65. * REMARQUES:
  66. * ----------
  67. *
  68. * CE SOUS-PROGRAMME N'EST PAS PREVU POUR FONCTIONNER AVEC UN NOMBRE
  69. * DE POINTS NUL.
  70. *
  71. * AUTEUR, DATE DE CREATION:
  72. * -------------------------
  73. *
  74. * PASCAL MANIGOT 10 SEPTEMBRE 1986
  75. * P.M. 24/02/87 : REMODELAGE, AVEC UN NOUVEAU SEGMENT "MCOURB".
  76. *
  77. * LANGAGE:
  78. * --------
  79. *
  80. * ESOPE + FORTRAN77
  81. *
  82. ************************************************************************
  83. *
  84. NPOIN = ABSCIS(/1)
  85. NPDISC = ABCURV(/1)
  86. DU = (U2COU - U1COU) / REAL(NPDISC-1)
  87. *
  88. IF (ILCOUR .EQ. 2) THEN
  89. COFDEN = 0.5
  90. ELSE
  91. * "ILCOUR" EST SUPPOSE VALOIR 3.
  92. COFDEN = 1.
  93. END IF
  94. ABSC1 = 0.
  95. ABSC2 = ABSCIS(1)
  96. *
  97. LONG = NPOIN
  98. SEGADJ,MCOURB
  99. IDIMP1 = IDIM + 1
  100. segact mcoord*mod
  101. NBPTA=nbpts
  102. NBPTS=NBPTA+NPOIN
  103. SEGADJ MCOORD
  104. MCOFCO = ICOFCO
  105. SEGACT,MCOFCO
  106. *
  107. DO 200 IB=1,NPOIN
  108. *
  109. * POUR UN POINT A ETUDIER, DETERMINATION DE 2 POINTS DE
  110. * COORDONNEES PARAMETRIQUES CONNUES ET L'ENCADRANT SUR LA COURBE.
  111. *
  112. ABSC0 = ABSC1
  113. ABSC1 = ABSC2
  114. IF (IB .EQ. NPOIN) THEN
  115. ABSC2 = ALONG
  116. ELSE
  117. ABSC2 = ABSCIS(IB+1)
  118. END IF
  119. *
  120. DO 210 IB2=2,NPDISC
  121. IF (ABSC1 .LE. ABCURV(IB2)) THEN
  122. * --> SORTIE DE BOUCLE
  123. GOTO 212
  124. END IF
  125. 210 CONTINUE
  126. * END DO
  127. IB2 = NPDISC
  128. *+* VAUDRAIT-IL MIEUX UN MESSAGE D'ERREUR ?
  129. 212 CONTINUE
  130. *
  131. * CALCUL DE LA COORDONNEE INTRINSEQUE PAR INTERPOLATION LINEAIRE
  132. *
  133. COFDIV = ABCURV(IB2) - ABCURV(IB2-1)
  134. IF (ABS(COFDIV) .LE. XPETIT) THEN
  135. * LA PORTION DE COURBE EST DE LONGUEUR NULLE. L'ABSCISSE
  136. * CURVILIGNE RESTE PRATIQUEMENT CONSTANTE.
  137. COF = 0.
  138. ELSE
  139. COF = (ABSC1 - ABCURV(IB2-1)) / COFDIV
  140. END IF
  141. U = U1COU + DU*REAL(IB2-2) + DU*COF
  142. *
  143. * CALCUL DES COORDONNEES.
  144. *
  145. XCOOR(NBPTA*IDIMP1+1) = POLYNO (COFCOU(1,1),ND1COU,1,U)
  146. XCOOR(NBPTA*IDIMP1+2) = POLYNO (COFCOU(1,2),ND1COU,1,U)
  147. IF (IDIM .EQ. 3)
  148. # XCOOR(NBPTA*IDIMP1+3) = POLYNO (COFCOU(1,3),ND1COU,1,U)
  149. XCOOR(NBPTA*IDIMP1+IDIMP1) = (ABSC2 - ABSC0) * COFDEN
  150. NBPTA=NBPTA+1
  151. *
  152. *+* ON POURRAIT ENVISAGER UN PETIT SCHEMA ITERATIF POUR QUE
  153. *+* L'INTERPOLATION SOIT LINEAIRE SUIVANT L'ABSCISSE CURVILIGNE.
  154. *
  155. UCOU(IB) = U
  156. *
  157. 200 CONTINUE
  158. * END DO
  159. *
  160. SEGDES,MCOFCO
  161. *
  162. END
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  

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