Télécharger courbe.eso

Retour à la liste

Numérotation des lignes :

courbe
  1. C COURBE SOURCE CHAT 05/01/12 22:25:31 5004
  2. SUBROUTINE COURBE
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. ************************************************************************
  6. *
  7. * C O U R B E
  8. * -----------
  9. *
  10. * SOUS-PROGRAMME ASSOCIE A L'OPERATEUR "COURBE"
  11. *
  12. * FONCTION:
  13. * ---------
  14. *
  15. * CREATION D'UNE COURBE POLYNOMIALE, C'EST-A-DIRE DONT LES POINTS
  16. * "P" VERIFIENT UNE EQUATION:
  17. *
  18. * 2 3
  19. * P(U) = P0 + U.P1 + U .P2 + U .P3 + ...
  20. *
  21. * PHRASE D'APPEL (EN GIBIANE):
  22. * ----------------------------
  23. *
  24. * LILI = COURBE (N) (DINI DENS1) (DFIN DENS2) (PINI OB1) (PFIN OB2)
  25. * P0 P1 (P2 (P3 ...) ) (PARAMETRE U1 U2) (REGULIER) ;
  26. *
  27. * OPERANDES ET RESULTATS:
  28. * -----------------------
  29. *
  30. * LILI 'MAILLAGE' MAILLAGE RESULTANT DE L'OPERATION. OUTRE LA
  31. * COURBE POLYNOMIALE NOUVELLEMENT CREEE, CE
  32. * MAILLAGE COMPRENDRA "OB1" ET/OU "OB2", QUE
  33. * CE SOIENT DES 'POINTS' OU DES 'MAILLAGE'.
  34. * N 'ENTIER ' NOMBRE D'ELEMENTS GEOMETRIQUES DEMANDE.
  35. * > 0 : LONGUEURS EGALES DES ELEMENTS.
  36. * < 0 : LONGUEURS DES ELEMENTS FONCTIONS DES
  37. * DENSITES DES EXTREMITES DE LA COURBE.
  38. * DINI 'MOT '
  39. * DENS1 'FLOTTANT' DENSITE DEMANDEE POUR LE 1ER ELEMENT.
  40. * DFIN 'MOT '
  41. * DENS2 'FLOTTANT' DENSITE DEMANDEE POUR LE DERNIER ELEMENT.
  42. * PINI 'MOT '
  43. * OB1 'POINT ' POINT INITIAL DE LA COURBE: SERA
  44. * EFFECTIVEMENT PRIS COMME TEL SI SES
  45. * COORDONNEES S'OBTIENNENT POUR LA VALEUR "U1"
  46. * (VOIR DEFINITION PLUS LOIN).
  47. * OU 'MAILLAGE' LE POINT FINAL DE CET OBJET "OB1" (FORCEMENT
  48. * UNE LIGNE) SERA LE POINT INITIAL DE LA
  49. * COURBE (AVEC LES MEMES RESERVES QUE
  50. * CI-DESSUS) ET "LILI" CONTIENDRA "OB1".
  51. * PFIN 'MOT '
  52. * OB2 'POINT ' POINT FINAL DE LA COURBE: SERA EFFECTIVEMENT
  53. * PRIS COMME TEL SI SES COORDONNEES
  54. * S'OBTIENNENT POUR LA VALEUR "U2" (VOIR
  55. * DEFINITION PLUS LOIN).
  56. * OU 'MAILLAGE' LE POINT INITIAL DE CET OBJET "OB2"
  57. * (FORCEMENT UNE LIGNE) SERA LE POINT FINAL
  58. * DE LA COURBE (AVEC LES MEMES RESERVES QUE
  59. * CI-DESSUS) ET "LILI" CONTIENDRA "OB2".
  60. * P0, P1, 'POINT ' POINTS DE LA REPRESENTATION POLYNOMIALE DE
  61. * P2, ... LA COURBE.
  62. * CES POINTS NE FONT PAS PARTIE DE LA COURBE.
  63. * "P0" ET "P1" SONT OBLIGATOIRES.
  64. * PARAMETR 'MOT '
  65. * U1, U2 'FLOTTANT' BORNES DU PARAMETRE "U" DU POLYNOME DE LA
  66. * COURBE.
  67. * = (0,1) PAR DEFAUT.
  68. * REGULIER 'MOT ' INDIQUE QUE LA COURBE DEVRA ETRE SUBDIVISEE
  69. * EN ELEMENTS DONT LES LONGUEURS SERONT
  70. * ETABLIES SELON L'ABSCISSE CURVILIGNE ET NON
  71. * PAS SELON LE PARAMETRE "U".
  72. *
  73. * MODULES UTILISES:
  74. * -----------------
  75. *
  76.  
  77. -INC PPARAM
  78. -INC CCOPTIO
  79. -INC CCREEL
  80. -INC SMCOORD
  81. -INC TMCOURB
  82. *
  83. * VARIABLES:
  84. * ----------
  85. *
  86. * BIDSP, BIDDP = VARIABLES UTILISEES POUR RESOUDRE DES PROBLEMES DE
  87. * LECTURES DE REELS, TANTOT EN S.P., TANTOT EN D.P.,
  88. * ET, PEUT-ETRE, BIENTOT EN ON-NE-SAIT-QUOI.
  89. *
  90. SEGMENT,MTEMP
  91. INTEGER ITEMP(2)
  92. ENDSEGMENT
  93. *
  94. * CONSTANTES:
  95. * -----------
  96. *
  97. * MOTCLE LISTE DES MOTS-CLES RECONNUS.
  98. *
  99. INTEGER LMOTCL
  100. PARAMETER (LMOTCL = 6)
  101. CHARACTER*4 MOTCLE(LMOTCL)
  102. *
  103. * AUTEUR, DATE DE CREATION:
  104. * -------------------------
  105. *
  106. * PASCAL MANIGOT 11 SEPTEMBRE 1986
  107. * P.M. 25/02/87 : REPRISE.
  108. *
  109. * LANGAGE:
  110. * --------
  111. *
  112. * ESOPE + FORTRAN77 + EXTENSION: CARACTERES MIS DANS DES ENTIERS
  113. *
  114. ************************************************************************
  115. *
  116. REAL*8 RBID(1)
  117. DIMENSION IBID(1)
  118. DATA MOTCLE/'DINI','DFIN','PINI','PFIN','PARA','REGU'/
  119. *
  120. LONG = 0
  121. SEGINI,MCOURB
  122. *
  123. * -- LECTURE DES PARAMETRES PARTICULIERS --
  124. *
  125. * FACTEUR DE DECOUPAGE:
  126. CALL LIRENT (I,0,IRETOU)
  127. IF (IRETOU .EQ. 1) THEN
  128. NLMCOU = I
  129. ELSE
  130. NLMCOU = 0
  131. END IF
  132. *
  133. U1COU = 0.D0
  134. U2COU = 1.D0
  135. D1COU = 0.
  136. D2COU = 0.
  137. PT1COU = 0
  138. LI1COU = 0
  139. PT2COU = 0
  140. LI2COU = 0
  141. REGCOU = .FALSE.
  142. *
  143. * DO
  144. 205 CONTINUE
  145. *
  146. IRETOU = 0
  147. CALL LIRMOT (MOTCLE,LMOTCL,IRETOU,0)
  148. IF (IRETOU .LE. 0) THEN
  149. * --> SORTIE DE BOUCLE
  150. GOTO 206
  151. END IF
  152. *
  153. GOTO (101,102,103,104,105,106) IRETOU
  154. 101 CONTINUE
  155. CALL LIRE04 (XPETIT,BIDDP,0,1,IRETOU)
  156. IF (IERR .NE. 0) RETURN
  157. D1COU = BIDDP
  158. GOTO 200
  159. 102 CONTINUE
  160. CALL LIRE04 (XPETIT,BIDDP,0,1,IRETOU)
  161. IF (IERR .NE. 0) RETURN
  162. D2COU = BIDDP
  163. GOTO 200
  164. 103 CONTINUE
  165. * IL FAUT ESSAYER DE LIRE UN "MAILLAGE" AVANT UN "POINT" POUR
  166. * NE PAS LIRE PAR ERREUR LES POINTS-COEFFICIENTS DU POLYNOME.
  167. IRETOU = 0
  168. CALL LIROBJ ('MAILLAGE',I,0,IRETOU)
  169. IF (IRETOU .EQ. 1) THEN
  170. LI1COU = I
  171. ELSE
  172. CALL LIROBJ ('POINT',I,1,IRETOU)
  173. IF (IERR .NE. 0) RETURN
  174. PT1COU = I
  175. END IF
  176. GOTO 200
  177. 104 CONTINUE
  178. IRETOU = 0
  179. CALL LIROBJ ('MAILLAGE',I,0,IRETOU)
  180. IF (IRETOU .EQ. 1) THEN
  181. LI2COU = I
  182. ELSE
  183. CALL LIROBJ ('POINT',I,1,IRETOU)
  184. IF (IERR .NE. 0) RETURN
  185. PT2COU = I
  186. END IF
  187. GOTO 200
  188. 105 CONTINUE
  189. CALL LIRREE (BIDSP,1,IRETOU)
  190. IF (IERR .NE. 0) RETURN
  191. U1COU = BIDSP
  192. CALL LIRREE (BIDSP,1,IRETOU)
  193. IF (IERR .NE. 0) RETURN
  194. U2COU = BIDSP
  195. * RQ: AUCUNE RELATION D'ORDRE ENTRE "U1COU" ET "U2COU" POUR
  196. * NE PAS IMPOSER, PAR EXEMPLE, AU POINT INITIAL DE
  197. * CORRESPONDRE AU PLUS PETIT PARAMETRE.
  198. GOTO 200
  199. 106 CONTINUE
  200. REGCOU = .TRUE.
  201. GOTO 200
  202. 200 CONTINUE
  203. *
  204. GOTO 205
  205. * END DO
  206. 206 CONTINUE
  207. *
  208. * -- LECTURE DES POINTS DU POLYNOME --
  209. *
  210. SEGINI,MTEMP
  211. CALL LIROBJ ('POINT',IP,1,IRETOU)
  212. IF (IERR .NE. 0) RETURN
  213. ITEMP(1) = IP
  214. CALL LIROBJ ('POINT',IP,1,IRETOU)
  215. IF (IERR .NE. 0) RETURN
  216. ITEMP(2) = IP
  217. * DO
  218. 305 CONTINUE
  219. CALL LIROBJ ('POINT',IP,0,IRETOU)
  220. IF (IRETOU .EQ. 1) THEN
  221. ITEMP(**) = IP
  222. ELSE
  223. * --> SORTIE DE BOUCLE
  224. GOTO 306
  225. END IF
  226. GOTO 305
  227. * END DO
  228. 306 CONTINUE
  229. ND1COU = ITEMP(/1)
  230. *
  231. * CREATION DES POLYNOMES REELS:
  232. N = ND1COU
  233. SEGINI,MCOFCO
  234. ICOFCO = MCOFCO
  235. SEGACT,MCOORD
  236. IF (IDIM .EQ. 3) THEN
  237. CALL DCOMP1(ITEMP,N,XCOOR,COFCOU(1,1),COFCOU(1,2),COFCOU(1,3))
  238. ELSE
  239. CALL DCOMP1(ITEMP,N,XCOOR,COFCOU(1,1),COFCOU(1,2),RBID)
  240. END IF
  241. SEGSUP,MTEMP
  242. SEGDES,MCOFCO
  243. *
  244. CALL COURB1 (MCOURB, LIGNE)
  245. IF (IERR .NE. 0) RETURN
  246. MCOFCO = ICOFCO
  247. SEGSUP,MCOFCO
  248. SEGSUP,MCOURB
  249. *
  250. CALL ECROBJ ('MAILLAGE',LIGNE)
  251. *
  252. END
  253.  
  254.  
  255.  
  256.  

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