Télécharger puis.eso

Retour à la liste

Numérotation des lignes :

puis
  1. C PUIS SOURCE CB215821 26/08/24 21:18:03 12622
  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 1002 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. 1002 CONTINUE
  96. MOTY1=KEVOL1.NOMEVY(1:4)
  97. C
  98. C
  99. 51 MLREE1=KEVOL1.IPROGY
  100. IF (KEVOL1.NUMEVY.NE.'REEL'.AND.KEVOL1.NUMEVY.NE.'HIST') GOTO 1000
  101. SEGACT MLREE1
  102. IF(KEVOL1.TYPY.NE.'LISTMOTS')THEN
  103. L1=MLREE1.PROG(/1)
  104. ELSE
  105. MLMOT1=KEVOL1.IPROGY
  106. SEGACT MLMOT1
  107. L1=MLMOT1.MOTS(/2)
  108. SEGDES MLMOT1
  109. ENDIF
  110. C
  111. KEVOL2=MEVOL2.IEVOLL(IC)
  112. SEGACT KEVOL2
  113. MOTX=KEVOL2.NOMEVX
  114. DO 1003 I=1,3
  115. DO 52 J=1,8
  116. IF(KEVOL2.NOMEVY(I*4-3:I*4).EQ.MOTY(J)) THEN
  117. MOTY3=KEVOL2.NOMEVY(I*4-3:I*4)
  118. GOTO 53
  119. ENDIF
  120. 52 CONTINUE
  121. 1003 CONTINUE
  122. MOTY3=KEVOL2.NOMEVY(1:4)
  123. C
  124. C
  125. 53 MLREE2=KEVOL2.IPROGY
  126. IF (KEVOL2.NUMEVY.NE.'REEL'.AND.KEVOL2.NUMEVY.NE.'HIST') GOTO 1001
  127. SEGACT MLREE2
  128. IF(KEVOL2.TYPY.NE.'LISTMOTS')THEN
  129. L2=MLREE2.PROG(/1)
  130. ELSE
  131. MLMOT2=KEVOL2.IPROGY
  132. SEGACT MLMOT2
  133. L2=MLMOT2.MOTS(/2)
  134. SEGDES MLMOT2
  135. ENDIF
  136. C
  137. C LES LISTREEL ONT-ILS MEME LONGUEUR ?
  138. IF(L1.EQ.L2)GOTO 10
  139. CALL ERREUR(337)
  140. GOTO 100
  141. C
  142. C CREATION DE L'OBJET PROD DE TYPE EVOLUTIO
  143. C
  144. 10 CONTINUE
  145. SEGDES MLREE1
  146. SEGDES MLREE2
  147. C
  148. C LES LISTREEL DES ABSCISSES SONT ILS IDENTIQUES ?
  149. MLREE1=KEVOL1.IPROGX
  150. MLREE3=KEVOL2.IPROGX
  151. SEGACT MLREE1,MLREE3
  152. CALL VERIPR(MLREE1.PROG,MLREE3.PROG,L1,IRETOU,1.D-2)
  153. IF(IRETOU.EQ.0) THEN
  154. CALL ERREUR(394)
  155. RETURN
  156. ENDIF
  157. SEGDES MLREE1
  158. C
  159. MLREE1=KEVOL1.IPROGY
  160. MLREE2=KEVOL2.IPROGY
  161. SEGACT MLREE1,MLREE2,MLREE3
  162. SEGINI KEVOLL
  163. IEVOLL(IC)=KEVOLL
  164. TYPX='LISTREEL'
  165. TYPY='LISTREEL'
  166. c KEVTEX=TI
  167. C
  168. NOMEVX=MOTX
  169. IF (INV.EQ.1) THEN
  170. NOMEVY=MOTY1//MOTY2//MOTY3
  171. ELSE
  172. NOMEVY=MOTY1//MOTY4//MOTY3
  173. ENDIF
  174. KEVTEX=NOMEVY
  175. NUMEVX=ICOUL
  176. NUMEVY='REEL'
  177. C
  178. JG=L1
  179. SEGINI MLREE4
  180. IPROGX=MLREE4
  181. SEGINI MLREE5
  182. IPROGY=MLREE5
  183. C
  184. C
  185. C
  186. C
  187. IF(INV.EQ.1) THEN
  188. DO 20 I=1,L1
  189. FORC=MLREE1.PROG(I)
  190. VITE=MLREE2.PROG(I)
  191. TIM=MLREE3.PROG(I)
  192. C
  193. C TIM ET FORC*VITE FORMENT UN POINT DE L'OBJET EVOL CREE PAR *
  194. C
  195. MLREE4.PROG(I)=TIM
  196. MLREE5.PROG(I)=VITE*FORC
  197. C
  198. 20 CONTINUE
  199. ELSE
  200. DO 21 I=1,L1
  201. FORC=MLREE1.PROG(I)
  202. VITE=MLREE2.PROG(I)
  203. TIM=MLREE3.PROG(I)
  204. C
  205. C TIM ET FORC/VITE FORMENT UN POINT DE L'OBJET EVOL CREE PAR *
  206. C
  207. MLREE4.PROG(I)=TIM
  208. IF(ABS(VITE).GT.1.E-20) THEN
  209. MLREE5.PROG(I)=FORC/VITE
  210. ELSE
  211. WRITE(IOIMP,*)' VALEURS NULLES DANS L OBJET EVOLUTION',
  212. & 'DIVISEUR : RESULTAT MIS A 0'
  213. MLREE5.PROG(I)=0.D0
  214. GOTO 21
  215. ENDIF
  216. C
  217. 21 CONTINUE
  218. ENDIF
  219. C
  220. C DESACTIVE LES LISTREEL
  221. C
  222. SEGDES MLREE4,MLREE5
  223. SEGDES MLREE3,MLREE1,MLREE2
  224. C
  225. C DESACTIVE LES KEVOL
  226. C
  227. SEGDES KEVOLL
  228. SEGDES KEVOL1,KEVOL2
  229. C
  230. 201 CONTINUE
  231. C
  232. C DESACTIVE LES MEVOL
  233. C
  234. SEGDES MEVOLL
  235. SEGDES MEVOL1,MEVOL2
  236. C
  237. 100 CONTINUE
  238. RETURN
  239. 1000 CONTINUE
  240. moterr(1:8 )='EVOLUTIO'
  241. moterr(9:13)=KEVOL1.NUMEVY
  242. call erreur(131)
  243. return
  244. 1001 CONTINUE
  245. moterr(1:8 )='EVOLUTIO'
  246. moterr(9:13)=KEVOL2.NUMEVY
  247. call erreur(131)
  248. RETURN
  249.  
  250.  
  251. END
  252.  
  253.  
  254.  

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