Télécharger evcomp.eso

Retour à la liste

Numérotation des lignes :

evcomp
  1. C EVCOMP SOURCE OF166741 24/10/25 21:15:05 12049
  2. SUBROUTINE EVCOMP(ICOUL)
  3. C=======================================================================
  4. C OPTION COMP DE L'OPERATEUR EVOL
  5. C
  6. C POUR RENTRER UN OBJET DE TYPE EVOLUTION DE SOUS TYPE COMPLEXE
  7. C SYNTAXE :
  8. C
  9. c EVOL = EVOL (COUL) 'COMP' | ('REIM') | ...
  10. c | ('MOPH') |
  11. C
  12. c ... ('LEGE' TITOR1 TITOR2) ...
  13. C
  14. c ... NOMX PRGX (NOMOR1) PRGY1 (NOMOR2) PRGY2 ;
  15. C
  16. C COUL : COULEUR DE LA COURBE (FACULTATIVE)
  17. C
  18. C PRGX : LISTE DE REELS (ABSCISSES)
  19. C
  20. C PRGY1 : LISTE DE REELS (PARTIE REELLE OU MODULE)
  21. C
  22. C PRGY2 : LISTE DE REELS (PARTIE IMAGINAIRE OU PHASE)
  23. C
  24. C CREATION : 04/12/87, F. ROULLIER
  25. C MODIFS : 2015-05-07 BP, ajout du titre de la LEGEnde
  26. C
  27. C======================================================================
  28. IMPLICIT INTEGER(I-N)
  29. IMPLICIT REAL*8(A-H,O-Z)
  30.  
  31. -INC PPARAM
  32. -INC CCOPTIO
  33. -INC SMEVOLL
  34. -INC SMLREEL
  35.  
  36. CHARACTER*72 MTIT1
  37. CHARACTER*12 MOTITR
  38. CHARACTER*4 MOTCMP(2,2),MOTOPT(2)
  39. CHARACTER*4 MOTIT1(1)
  40. DATA MOTCMP/'MODU','PHAS','PREE','PIMA'/
  41. DATA MOTOPT/'MOPH','REIM'/
  42. DATA MOTIT1/'LEGE'/
  43. LOPT=2
  44.  
  45. C LECTURE OPTIONNELLE DU TYPE (MOPH ou REIM)
  46. CALL LIRMOT (MOTOPT,LOPT,IOPT,0)
  47. IF (IERR.NE.0) RETURN
  48. IF (IOPT.EQ.0) IOPT=2
  49.  
  50. C CREATION DE L'EVOLUTION MERE
  51. N=2
  52. SEGINI MEVOLL
  53. IPVO=MEVOLL
  54. IEVTEX(1:72)=TITREE(1:72)
  55. ITYEVO='COMPLEXE'
  56.  
  57. C CREATION DES 2 SOUS-EVOLUTIONS
  58. SEGINI KEVOL1,KEVOL2
  59. IEVOLL(1)=KEVOL1
  60. IEVOLL(2)=KEVOL2
  61.  
  62. KEVOL1.NUMEVX=ICOUL
  63. KEVOL1.LSTYL = 1
  64. KEVOL1.MMARQ = 0
  65. KEVOL1.KTAIL = 3
  66. KEVOL1.NUMEVY=' '
  67. KEVOL1.TYPX='LISTREEL'
  68. KEVOL1.TYPY='LISTREEL'
  69. KEVOL1.NOMEVX=' '
  70. KEVOL1.NOMEVY=' '
  71. KEVOL1.KEVTEX=' '
  72.  
  73. KEVOL2.NUMEVX=ICOUL
  74. KEVOL2.LSTYL = 1
  75. KEVOL2.MMARQ = 0
  76. KEVOL2.KTAIL = 3
  77. KEVOL2.NUMEVY=' '
  78. KEVOL2.TYPX='LISTREEL'
  79. KEVOL2.TYPY='LISTREEL'
  80. KEVOL2.NOMEVX=' '
  81. KEVOL2.NOMEVY=' '
  82. KEVOL2.KEVTEX=' '
  83.  
  84. C LECTURE OPTIONNELLE DES TITRES DES SOUS EVOLUTIONS DE LA COURBE (LEGE) :
  85. ITIT1=0
  86. CALL LIRMOT(MOTIT1,1,ITIT1,0)
  87. IF (IERR.NE.0) RETURN
  88. IF(ITIT1.EQ.1) THEN
  89. MTIT1=' '
  90. CALL LIRCHA(MTIT1,1,IRETOU)
  91. IF (IERR.NE.0) RETURN
  92. KEVOL1.KEVTEX=MTIT1
  93. MTIT1=' '
  94. CALL LIRCHA(MTIT1,1,IRETOU)
  95. IF (IERR.NE.0) RETURN
  96. KEVOL2.KEVTEX=MTIT1
  97. ELSE
  98. IF(IOPT.EQ.1) THEN
  99. KEVOL1.KEVTEX='Amp'
  100. KEVOL2.KEVTEX='\j'
  101. ELSE
  102. KEVOL1.KEVTEX='Re'
  103. KEVOL2.KEVTEX='Im'
  104. ENDIF
  105. ENDIF
  106.  
  107. C LECTURE DES TITRES ET LISTREELS DE L'ABSCISSE + 2 ORDONNEES
  108. c boucle sur les 3 objets dans cet ordre
  109. DO K=1,2
  110. DO J=1,K
  111.  
  112. C *** TITRE DES ABSCISSES / ORDONNEES SOUS FORME DE CHAINE DE CARACTERES
  113. MOTITR=' '
  114. CALL LIRCHA(MOTITR,0,IRETOU)
  115. IF (IERR.NE.0) RETURN
  116. IF (IRETOU.GT.0) THEN
  117. IF (K.EQ.1) THEN
  118. KEVOL1.NOMEVX=MOTITR
  119. KEVOL2.NOMEVX=MOTITR
  120. ELSE
  121. IF(J.EQ.1) KEVOL1.NOMEVY=MOTITR
  122. IF(J.EQ.2) KEVOL2.NOMEVY=MOTITR
  123. ENDIF
  124. ENDIF
  125.  
  126. C *** LECTURE DE LISTREEL
  127. CALL LIROBJ('LISTREEL',IMOT,1,IRET)
  128. IF (IERR.NE.0) RETURN
  129. IF (K.EQ.1) THEN
  130. C ABSCISSES DES 2 COURBES
  131. KEVOL1.IPROGX=IMOT
  132. KEVOL2.IPROGX=IMOT
  133. MLREEL=IMOT
  134. SEGACT MLREEL
  135. LX = MLREEL.PROG(/1)
  136. SEGDES MLREEL
  137. ELSE
  138. IF (J.EQ.1) THEN
  139. C ORDONNEES DE LA PREMIERE COURBE
  140. KEVOL1.IPROGY=IMOT
  141. KEVOL1.NUMEVY=MOTCMP(1,IOPT)
  142. MLREEL=IMOT
  143. SEGACT MLREEL
  144. LY1 = MLREEL.PROG(/1)
  145. SEGDES MLREEL
  146. ELSE
  147. C ORDONNEES DE LA DEUXIEME COURBE
  148. KEVOL2.IPROGY=IMOT
  149. KEVOL2.NUMEVY=MOTCMP(2,IOPT)
  150. MLREEL=IMOT
  151. SEGACT MLREEL
  152. LY2 = MLREEL.PROG(/1)
  153. SEGDES MLREEL
  154. ENDIF
  155. ENDIF
  156.  
  157. ENDDO
  158. ENDDO
  159.  
  160. SEGDES KEVOL1,KEVOL2
  161. SEGDES MEVOLL
  162.  
  163. IF((LX.NE.LY1).OR.(LY1.NE.LY2)) THEN
  164. CALL ERREUR(263)
  165. C LES 3 PROGRESSIONS DOIVENT ETRE DE MEME LONGUEUR
  166. RETURN
  167. ENDIF
  168.  
  169. CALL ECROBJ('EVOLUTIO',IPVO)
  170.  
  171. c RETURN
  172. END
  173.  
  174.  
  175.  
  176.  

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