Télécharger courb2.eso

Retour à la liste

Numérotation des lignes :

courb2
  1. C COURB2 SOURCE PV 20/03/30 21:16:43 10567
  2. SUBROUTINE COURB2 (MCOURB,LIGNE)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. ************************************************************************
  6. *
  7. * C O U R B 2
  8. * -----------
  9. *
  10. * FONCTION:
  11. * ---------
  12. *
  13. * CONSTRUCTION DE LA COURBE POLYNOMIALE.
  14. *
  15. * MODULES UTILISES:
  16. * -----------------
  17. *
  18. -INC CCGEOME
  19.  
  20. -INC PPARAM
  21. -INC CCOPTIO
  22. -INC CCREEL
  23. -INC SMCOORD
  24. -INC SMELEME
  25. -INC TMCOURB
  26. *
  27. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN)
  28. * -----------
  29. *
  30. * MCOURB (E) SEGMENT ACTIF.
  31. * +IDIM (E) VOIR LE COMMUN "COPTIO".
  32. * +IDCOUL (E) VOIR LE COMMUN "CGEOME".
  33. * +ILCOUR (E) VOIR LE COMMUN "CGEOME".
  34. * +KDEGRE (E) VOIR LE COMMUN "CGEOME".
  35. * +NBNNE (E) VOIR LE COMMUN "CGEOME".
  36. * +MCOORD (E) VOIR LE COMMUN "COPTIO".
  37. * +XPETIT (E) VOIR LE COMMUN "CREEL".
  38. * LIGNE (S) OBJET 'MAILLAGE'.
  39. *
  40. * VARIABLES:
  41. * ----------
  42. *
  43. * ABSC ABSCISSE CURVILIGNE OU PARAMETRIQUE COURANTE.
  44. * ABSCIS TABLE DES ABSCISSES CURVILIGNES OU PARAMETRIQUES, SELON
  45. * QUE L'ON A L'OPTION "REGULIER" OU NON.
  46. * ON N'Y MET PAS LES ABSCISSES DES EXTREMITES.
  47. * ALONG LONGUEUR APPROXIMATIVE DE LA COURBE POLYNOMIALE.
  48. * APROG "RAISON" DE LA PROGRESSION GEOMETRIQUE DES DENSITES
  49. * SUCCESSIVES LE LONG DE LA COURBE.
  50. * D9COU LARGEUR COURANTE DE MAILLE EN UNITES DE LONGUEUR OU
  51. * PARAMETRIQUES (SELON L'OPTION "REGULIER" OU NON).
  52. * MABCUR SEGMENT CREE DANS "COURB3" ET UTILISE DANS "COURB4".
  53. * PT0COU DERNIER POINT CREE AVANT CREATION DES POINTS INTERIEURS
  54. * DE LA COURBE.
  55. * PT9COU POINT COURANT DE LA COURBE.
  56. *
  57. SEGMENT,MABCUR
  58. REAL*8 ABCURV(NPDISC)
  59. ENDSEGMENT
  60. SEGMENT,MABSCI
  61. REAL*8 ABSCIS(NPOIN)
  62. ENDSEGMENT
  63. INTEGER PT0COU,PT9COU
  64. *
  65. * AUTEUR, DATE DE CREATION:
  66. * -------------------------
  67. *
  68. * PASCAL MANIGOT 8 SEPTEMBRE 1986
  69. * P.M. 6 MARS 1987: AMELIORATION DU CALCUL DE LA DENSITE.
  70. *
  71. * LANGAGE:
  72. * --------
  73. *
  74. * ESOPE + FORTRAN77
  75. *
  76. ************************************************************************
  77. *
  78. IF (D1COU.EQ.0. .OR. D2COU.EQ.0.) THEN
  79. CALL ERREUR(17)
  80. RETURN
  81. END IF
  82. *
  83. CALL COURB3 (MCOURB, ALONG,MABCUR)
  84. * CONTRAIREMENT AUX OPERATEURS "DROITE" ET CIE, ON ACCEPTE DE CREER
  85. * UNE COURBE POLYNOMIALE DE LONGUEUR NULLE. CECI EST PARTICULIERE-
  86. * MENT UTILE LORSQUE CETTE COURBE EST LE COTE D'UNE SURFACE
  87. * PARAMETREE.
  88. IF (ALONG .LT. XPETIT) ALONG = XPETIT
  89. *
  90. D1COU = D1COU / ALONG
  91. D2COU = D2COU / ALONG
  92. *
  93. * DETERMINATION DE LA RAISON DES DENSITES SUCCESSIVES (PROGRESSION
  94. * GEOMETRIQUE) ET DU NOMBRE D'ELEMENTS DE LA COURBE:
  95. DEN1=D1COU
  96. DEN2=D2COU
  97. CALL DECOUP(NLMCOU,DEN1,DEN2,APROG,NBELEM,DENI,DECA,ALONG)
  98. D1COU=DEN1
  99. D2COU=DEN2
  100. *
  101. NLMCOU = NBELEM
  102. *
  103. IF (REGCOU) THEN
  104. D1COU = D1COU * ALONG
  105. ELSE
  106. D1COU = D1COU * (U2COU-U1COU)
  107. END IF
  108. IF (ILCOUR .EQ. 0) GOTO 900
  109. ITYPLM = KDEGRE(ILCOUR)
  110. IF (ITYPLM .EQ. 0) GOTO 900
  111. NBNN = NBNNE(ITYPLM)
  112. IF (NBNN .NE. 2 .AND. NBNN .NE. 3) GOTO 900
  113. NBSOUS = 0
  114. NBREF = 0
  115. SEGINI,MELEME
  116. ITYPEL = ITYPLM
  117. DO 150 IB=1,NBELEM
  118. ICOLOR(IB) = IDCOUL
  119. 150 CONTINUE
  120. * END DO
  121. *
  122. NPOIN = NBELEM * (NBNN - 1) - 1
  123. SEGINI,MABSCI
  124. PT0COU = nbpts
  125. *
  126. PT9COU = PT0COU
  127. NUM(1,1) = PT1COU
  128. D9COU = D1COU
  129. IF (REGCOU) THEN
  130. ABSC = 0.
  131. ELSE
  132. ABSC = U1COU
  133. END IF
  134. *
  135. IF (NBNN .EQ. 2) THEN
  136. DO 300 IB=1,(NBELEM-1)
  137. PT9COU = PT9COU + 1
  138. NUM(2,IB) = PT9COU
  139. NUM(1,IB+1) = PT9COU
  140. D9COU = D9COU * APROG
  141. ABSC = ABSC + D9COU
  142. ABSCIS(PT9COU-PT0COU) = ABSC
  143. 300 CONTINUE
  144. * END DO
  145. NUM(2,NBELEM) = PT2COU
  146. ELSE
  147. * "NBNN" = 3
  148. DO 310 IB=1,(NBELEM-1)
  149. PT9COU = PT9COU + 1
  150. NUM(2,IB) = PT9COU
  151. D9COU = D9COU * APROG
  152. ABSCIS(PT9COU-PT0COU) = D9COU/2. + ABSC
  153. PT9COU = PT9COU + 1
  154. NUM(3,IB) = PT9COU
  155. NUM(1,IB+1) = PT9COU
  156. ABSC = ABSC + D9COU
  157. ABSCIS(PT9COU-PT0COU) = ABSC
  158. 310 CONTINUE
  159. * END DO
  160. PT9COU = PT9COU + 1
  161. NUM(2,NBELEM) = PT9COU
  162. D9COU = D9COU * APROG
  163. ABSCIS(PT9COU-PT0COU) = D9COU/2. + ABSC
  164. NUM(3,NBELEM) = PT2COU
  165. END IF
  166. *
  167. LIGNE = MELEME
  168. SEGDES,MELEME
  169. *
  170. IF (NPOIN .GT. 0) THEN
  171. IF (REGCOU) THEN
  172. CALL COURB4 (MCOURB,MABCUR,MABSCI,ALONG)
  173. ELSE
  174. CALL COURB5 (MCOURB,MABSCI)
  175. END IF
  176. END IF
  177. SEGSUP,MABSCI,MABCUR
  178. *
  179. RETURN
  180. *
  181. * TRAITEMENT DES ERREURS:
  182. *
  183. 900 CONTINUE
  184. * ERREUR SUR LE TYPE D'ELEMENT.
  185. CALL ERREUR (16)
  186. RETURN
  187. *
  188. END
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  

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