Télécharger puis.eso

Retour à la liste

Numérotation des lignes :

puis
  1. C PUIS SOURCE BP208322 16/11/18 21:20:35 9177
  2. SUBROUTINE PUIS(IPEV1,IPEV2,IRET,INV)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. CHARACTER *72 TI
  6. CHARACTER*4 ITYP1
  7. CHARACTER*12 MOTX
  8. CHARACTER*4 MOTY(8),MOTY1,MOTY2,MOTY3,MOTY4
  9. C
  10. C=======================================================================
  11. C = =
  12. C = CONSTRUCTION D'UN OBJET DE TYPE EVOL CONTENANT LE PRODUIT OU LE =
  13. C = RAPPORT TERME A TERME DE DEUX OBJETS EVOLUTIO =
  14. C = =
  15. C = SYNTAXE : PROD = EVOLF * EVOLV (COUL) =
  16. C = =
  17. C = ON EXECUTE LE PRODUIT TERME A TERME DES ORDONNEES DES DEUX =
  18. C = OBJETS DE TYPE EVOLUTIO EVOLF ET EVOLV. LES ABSCISSES DE PROD, =
  19. C = L'OBJET AINSI CREE, RESTENT CELLES DE EVOLF ET EVOLV. =
  20. C = =
  21. C = =
  22. C = =
  23. C = MEVOL1 : POINTEUR SUR MEVOLF (OBJET EVOLUTION) =
  24. C = MEVOL2 : POINTEUR SUR MEVOLV " " =
  25. C = KEVOL1 : POINTEUR SUR KEVOLF =
  26. C = KEVOL2 : POINTEUR SUR KEVOLV =
  27. C = MLREE1 : POINTEUR SUR LA LISTREEL ORDONNEE DE EVOLF =
  28. C = MLREE2 : POINTEUR SUR LA LISTREEL ORDONNEE DE EVOLV =
  29. C = =
  30. C = =
  31. C = ADAPTE AUX OBJETS "EVOLUTION" DE TYPE SOUS-TYPE "COMPLEXE" =
  32. C = PAR APPEL A PUISCP PAR F.ROULLIER
  33. C=======================================================================
  34. C
  35. -INC CCGEOME
  36.  
  37. -INC PPARAM
  38. -INC CCOPTIO
  39. -INC SMEVOLL
  40. -INC SMLREEL
  41. -INC SMLMOTS
  42. POINTEUR MLREE4.MLREEL,MLREE5.MLREEL
  43. C
  44. DATA MOTY2,MOTY4/' * ',' / '/
  45. DATA MOTY(1),MOTY(2),MOTY(3),MOTY(4)/'DEPL','VITE','ACCE','FORC'/
  46. DATA MOTY(5),MOTY(6),MOTY(7),MOTY(8)/'BRUI','REEL','IMAG','LIAI'/
  47. C
  48. CALL LIRMOT(NCOUL,NBCOUL,ICOUL,0)
  49. IF(ICOUL.EQ.0) ICOUL=IDCOUL+1
  50. ICOUL=ICOUL-1
  51. C
  52. C LES 2 OBJETS EVOLUTION DOIVENT ETRE DE MEME LONGUEUR
  53. C L'UN EST UNE FORCE, L'AUTRE UNE VITESSE
  54. C
  55. MEVOL1=IPEV1
  56. SEGACT MEVOL1
  57. MEVOL2=IPEV2
  58. SEGACT MEVOL2
  59. C
  60. C TEST SUR LE SOUS-TYPE
  61. C
  62. ITYP1=MEVOL1.ITYEVO
  63. IF (ITYP1.NE.'COMP') GO TO 199
  64. SEGDES MEVOL1,MEVOL2
  65. CALL PUISCP(IPEV1,IPEV2,IRET,INV,ICOUL)
  66. RETURN
  67. 199 CONTINUE
  68. C
  69. C BOUCLE SUR LES COURBES, SI LES 2 EVOL EN ONT AUTANT
  70. C
  71. NC1=MEVOL1.IEVOLL(/1)
  72. NC2=MEVOL2.IEVOLL(/1)
  73. IF(NC1.EQ.NC2) GOTO 200
  74. CALL ERREUR(111)
  75. RETURN
  76. C
  77. 200 CONTINUE
  78. N=NC1
  79. SEGINI MEVOLL
  80. IRET=MEVOLL
  81. TI(1:72)=TITREE
  82. IEVTEX=TI
  83. ITYEVO='REEL'
  84. DO 201 IC=1,NC1
  85. C
  86. KEVOL1=MEVOL1.IEVOLL(IC)
  87. SEGACT KEVOL1
  88. DO 50 I=1,3
  89. DO 50 J=1,8
  90. IF(KEVOL1.NOMEVY(I*4-3:I*4).EQ.MOTY(J)) THEN
  91. MOTY1=KEVOL1.NOMEVY(I*4-3:I*4)
  92. GOTO 51
  93. ENDIF
  94. 50 CONTINUE
  95. MOTY1=KEVOL1.NOMEVY(1:4)
  96. C
  97. C
  98. 51 MLREE1=KEVOL1.IPROGY
  99. IF (KEVOL1.NUMEVY.NE.'REEL'.AND.KEVOL1.NUMEVY.NE.'HIST') GOTO 1000
  100. SEGACT MLREE1
  101. IF(KEVOL1.TYPY.NE.'LISTMOTS')THEN
  102. L1=MLREE1.PROG(/1)
  103. ELSE
  104. MLMOT1=KEVOL1.IPROGY
  105. SEGACT MLMOT1
  106. L1=MLMOT1.MOTS(/2)
  107. SEGDES MLMOT1
  108. ENDIF
  109. C
  110. KEVOL2=MEVOL2.IEVOLL(IC)
  111. SEGACT KEVOL2
  112. MOTX=KEVOL2.NOMEVX
  113. DO 52 I=1,3
  114. DO 52 J=1,8
  115. IF(KEVOL2.NOMEVY(I*4-3:I*4).EQ.MOTY(J)) THEN
  116. MOTY3=KEVOL2.NOMEVY(I*4-3:I*4)
  117. GOTO 53
  118. ENDIF
  119. 52 CONTINUE
  120. MOTY3=KEVOL2.NOMEVY(1:4)
  121. C
  122. C
  123. 53 MLREE2=KEVOL2.IPROGY
  124. IF (KEVOL2.NUMEVY.NE.'REEL'.AND.KEVOL2.NUMEVY.NE.'HIST') GOTO 1001
  125. SEGACT MLREE2
  126. IF(KEVOL2.TYPY.NE.'LISTMOTS')THEN
  127. L2=MLREE2.PROG(/1)
  128. ELSE
  129. MLMOT2=KEVOL2.IPROGY
  130. SEGACT MLMOT2
  131. L2=MLMOT2.MOTS(/2)
  132. SEGDES MLMOT2
  133. ENDIF
  134. C
  135. C LES LISTREEL ONT-ILS MEME LONGUEUR ?
  136. IF(L1.EQ.L2)GOTO 10
  137. CALL ERREUR(337)
  138. GOTO 100
  139. C
  140. C CREATION DE L'OBJET PROD DE TYPE EVOLUTIO
  141. C
  142. 10 CONTINUE
  143. SEGDES MLREE1
  144. SEGDES MLREE2
  145. C
  146. C LES LISTREEL DES ABSCISSES SONT ILS IDENTIQUES ?
  147. MLREE1=KEVOL1.IPROGX
  148. MLREE3=KEVOL2.IPROGX
  149. SEGACT MLREE1,MLREE3
  150. CALL VERIPR(MLREE1.PROG,MLREE3.PROG,L1,IRETOU,1.D-2)
  151. IF(IRETOU.EQ.0) THEN
  152. CALL ERREUR(394)
  153. RETURN
  154. ENDIF
  155. SEGDES MLREE1
  156. C
  157. MLREE1=KEVOL1.IPROGY
  158. MLREE2=KEVOL2.IPROGY
  159. SEGACT MLREE1,MLREE2,MLREE3
  160. SEGINI KEVOLL
  161. IEVOLL(IC)=KEVOLL
  162. TYPX='LISTREEL'
  163. TYPY='LISTREEL'
  164. c KEVTEX=TI
  165. C
  166. NOMEVX=MOTX
  167. IF (INV.EQ.1) THEN
  168. NOMEVY=MOTY1//MOTY2//MOTY3
  169. ELSE
  170. NOMEVY=MOTY1//MOTY4//MOTY3
  171. ENDIF
  172. KEVTEX=NOMEVY
  173. NUMEVX=ICOUL
  174. NUMEVY='REEL'
  175. C
  176. JG=L1
  177. SEGINI MLREE4
  178. IPROGX=MLREE4
  179. SEGINI MLREE5
  180. IPROGY=MLREE5
  181. C
  182. C
  183. C
  184. C
  185. IF(INV.EQ.1) THEN
  186. DO 20 I=1,L1
  187. FORC=MLREE1.PROG(I)
  188. VITE=MLREE2.PROG(I)
  189. TIM=MLREE3.PROG(I)
  190. C
  191. C TIM ET FORC*VITE FORMENT UN POINT DE L'OBJET EVOL CREE PAR *
  192. C
  193. MLREE4.PROG(I)=TIM
  194. MLREE5.PROG(I)=VITE*FORC
  195. C
  196. 20 CONTINUE
  197. ELSE
  198. DO 21 I=1,L1
  199. FORC=MLREE1.PROG(I)
  200. VITE=MLREE2.PROG(I)
  201. TIM=MLREE3.PROG(I)
  202. C
  203. C TIM ET FORC/VITE FORMENT UN POINT DE L'OBJET EVOL CREE PAR *
  204. C
  205. MLREE4.PROG(I)=TIM
  206. IF(ABS(VITE).GT.1.E-20) THEN
  207. MLREE5.PROG(I)=FORC/VITE
  208. ELSE
  209. WRITE(IOIMP,*)' VALEURS NULLES DANS L OBJET EVOLUTION',
  210. & 'DIVISEUR : RESULTAT MIS A 0'
  211. MLREE5.PROG(I)=0.D0
  212. GOTO 21
  213. ENDIF
  214. C
  215. 21 CONTINUE
  216. ENDIF
  217. C
  218. C DESACTIVE LES LISTREEL
  219. C
  220. SEGDES MLREE4,MLREE5
  221. SEGDES MLREE3,MLREE1,MLREE2
  222. C
  223. C DESACTIVE LES KEVOL
  224. C
  225. SEGDES KEVOLL
  226. SEGDES KEVOL1,KEVOL2
  227. C
  228. 201 CONTINUE
  229. C
  230. C DESACTIVE LES MEVOL
  231. C
  232. SEGDES MEVOLL
  233. SEGDES MEVOL1,MEVOL2
  234. C
  235. 100 CONTINUE
  236. RETURN
  237. 1000 CONTINUE
  238. moterr(1:8 )='EVOLUTIO'
  239. moterr(9:13)=KEVOL1.NUMEVY
  240. call erreur(131)
  241. return
  242. 1001 CONTINUE
  243. moterr(1:8 )='EVOLUTIO'
  244. moterr(9:13)=KEVOL2.NUMEVY
  245. call erreur(131)
  246. RETURN
  247.  
  248.  
  249. END
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  

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