Télécharger evsolu.eso

Retour à la liste

Numérotation des lignes :

evsolu
  1. C EVSOLU SOURCE BP208322 22/09/09 21:15:05 11448
  2. SUBROUTINE EVSOLU(ICOUL)
  3. C=======================================================================
  4. C OPTION SOLU DE L'OPERATEUR EVOL (CONSTRUCTION DE COURBES)
  5. C
  6. C.1.EVOLUTION D'UN DDL DANS L'OBJET SOLUTION:
  7. C MEVOL = EVOL COUL SOLU MSOLUT TYPE PT1 COMP (INSTANTS) ;
  8. C ---- ---- ---- ----
  9. C
  10. C.2.EVOLUTION DE PLUSIEURS DDL DANS L'OBJET SOLUTION:
  11. C MEVOL = EVOL COUL SOLU MSOLUT TYPE CHP1 (INSTANTS) ;
  12. C ---- ---- ----
  13. C
  14. C.3.EVOLUTION DE LA CONTRIBUTION MODALE RELATIVE AU MODE MOD1:
  15. C MEVOL = EVOL COUL SOLU MSOLUT TYPE MOD1 ALFA (INSTANTS);
  16. C ---- ---- ---- ----
  17. C
  18. C.4.EVOLUTION D'UNE VARIABLE DE LIAISON RELATIVE A LA LIAISON MAT1:
  19. C MEVOL = EVOL COUL SOLU MSOLUT LIAI MAT1 COMP (INSTANTS) ;
  20. C ---- ---- ---- ----
  21. C
  22. C.5.EVOLUTION D'UNE INCONNUE DE LIAISON RELATIVE A LA LIAISON MAT1:
  23. C MEVOL = EVOL COUL SOLU MSOLUT TYPE MAT1 COMP (INSTANTS);
  24. C ---- ---- ---- ----
  25. C
  26. C COUL : COULEUR (FACULTATIVE)
  27. C MEVOL : OBJET DE TYPE EVOLUTION
  28. C MSOLUT : OBJET SOLUTION
  29. C TYPE : MOT CLE:TYPE DE LA VARIABLE (DEPL,VITE,ACCE,LIAI..)
  30. C COMP : NOM DE LA COMPOSANTE CHOISIE
  31. C INSTANTS: PROCEDURE FACULTATIVE POUR CHOISIR LES CAS DE SORTIE
  32. C PROGX :OBJET LISTREEL, LISTE DES TEMPS A SORTIR
  33. C LECTC :OBJET LISTENTI, LISTE DES CAS A SORTIR
  34. C RIEN :L'OBJET EVOLUTION PORTE SUR TOUS LES CAS PRESENTS
  35. C DANS LE MSOLUT
  36. C
  37. C PT1 : POINT OU MELEME A EXTRAIRE
  38. C CHP1 : CHPOINT CONTENANT LES POINTS ET DDL (FABRIQUE PAR
  39. C EXEMPLE PAR MANU CHPO )
  40. C MOD1 : OBJET MSOLUT (MODE OU SOLUSTAT...)
  41. C MAT1 : OBJET ATTACHE.
  42. C
  43. C LES OBJETS PT1,MOD1,MAT1 SERVENT A REPERER DANS LES CHAMPS
  44. C CHOISIS, LE(S) POINT(S) QUI INTERESSENT L'EVOLUTION.
  45. C
  46. C CREATION : 16/10/85, FARVACQUE
  47. C MODIFS : 2015, bp ajout du titre de la LEGEnde
  48. C
  49. C=======================================================================
  50. IMPLICIT INTEGER(I-N)
  51. LOGICAL L0,L1
  52. REAL*8 X0,X1
  53. CHARACTER*4 CHAR0,CHAR1
  54. CHARACTER*8 CTYP
  55. -INC PPARAM
  56. -INC CCOPTIO
  57. -INC SMSOLUT
  58. -INC SMTABLE
  59. -INC SMEVOLL
  60. -INC SMATTAC
  61. -INC SMELEME
  62. -INC SMCHPOI
  63. SEGMENT NUMOO
  64. INTEGER NUMO(N),KLIST(N)
  65. CHARACTER*(LOCHPO) NUDDL(N)
  66. ENDSEGMENT
  67. CHARACTER*72 TI,MTIT1
  68. * CHARACTER*4 MCHA,NOMCO
  69. CHARACTER*72 MCHA,NOMCO
  70. CHARACTER*8 ITYPE
  71. CHARACTER*8 ITYP1
  72. CHARACTER*4 MOTIT1(1)
  73. DATA MOTIT1/'LEGE'/
  74.  
  75. C LECTURE OPTIONNELLE DU TITRE DE LA SOUS EVOLUTION DE LA COURBE (LEGE) :
  76. MTIT1=' '
  77. ITIT1=0
  78. CALL LIRMOT(MOTIT1,1,ITIT1,0)
  79. IF(ITIT1.EQ.1) THEN
  80. CALL LIRCHA(MTIT1,1,IRETOU)
  81. IF(IERR.NE.0) RETURN
  82. ENDIF
  83.  
  84. C------TYPE DU PROCHAIN OBJET A LIRE----(TABLE OU SOLUTION)
  85. CALL QUETYP (CTYP,1,IRETOU)
  86. IF (IERR.NE.0) RETURN
  87.  
  88. C --- ON LIT LE NOM DU CHAMP A TRAITER ET LE NOM DE LA COMPOSANTE
  89. CALL LIRCHA(MCHA,1,IRETOU)
  90. IF(IERR.NE.0) GOTO 5000
  91. LCHALU=IRETOU
  92. CALL LIRCHA(NOMCO,0,IRETOU)
  93. IF(IRETOU.EQ.0) NOMCO=' '
  94. LCOLU=IRETOU
  95. C
  96. IF (CTYP(1:5).EQ.'TABLE') THEN
  97. ISTA=0
  98. CALL LIRTAB ('RESULTAT_DYNE',ISTA,1,IRETOU)
  99. IF (IERR.NE.0) GOTO 5000
  100. ENDIF
  101. C--------------
  102. C
  103. IF (CTYP(1:8).EQ.'SOLUTION') THEN
  104. CALL LIROBJ('SOLUTION',KSOLU,1,IRETOU)
  105. IF(IERR.NE.0) GOTO 5000
  106. MSOLUT=KSOLU
  107. ENDIF
  108. C-----ON LIT EVENTUELLEMENT LA LISTE DES PAS DE TEMPS OU DE CAS ---
  109. IPX=0
  110. ITOUS=0
  111. ILX=0
  112. CALL LIROBJ('LISTREEL',IPX,0,IRETOU)
  113. IF(IRETOU.EQ.0) CALL LIROBJ('LISTENTI',ILX,0,IRETOU)
  114. IF(IRETOU.EQ.0) ITOUS=1
  115. C----------------------------------------------------------
  116. C *** ON VA CHERCHER LE CHAMP MCHA DANS LE MSOLUT
  117. C
  118. IF (CTYP(1:8).EQ.'SOLUTION') THEN
  119. SEGACT MSOLUT
  120. MOTERR(1:8)= ITYSOL
  121. CALL CHRCHA(MCHA,MOTERR(1:8),ICHA,ISOLIT)
  122. IF(ICHA.EQ.0) THEN
  123. MOTERR(1:8)='SOLUTION'
  124. MOTERR(9:26)=ITYSOL
  125. MOTERR(30:38)=MCHA
  126. CALL ERREUR(235)
  127. C ERREUR DANS LE TYPE DE CHAMP
  128. GOTO 5000
  129. ENDIF
  130. MSOLEN=MSOLIS(ICHA)
  131. IF(MSOLEN.EQ.0) THEN
  132. MOTERR(1:8)='SOLUTION'
  133. MOTERR(9:26)=ITYSOL
  134. MOTERR(30:38)=MCHA
  135. CALL ERREUR(235)
  136. C CE TYPE DE CHAMP EST VIDE DANS LE MSOLUT
  137. GOTO 5000
  138. ENDIF
  139. C
  140. C **** VERIFS DE COMPATIBILITE IPX,ILX, MSOLUT... EN RETOUR :
  141. C **** DANS IPX LE LISTREEL A METTRE DANS IPROGX
  142. C **** DANS ILEX LE LISTENTI QUI CONTIENT LES NUMERO DES CHAMPS
  143. C
  144. IF(MSOLIS(1).EQ.0)GOTO 600
  145. IBOS=MSOLUT
  146. CALL VERIDY(IBOS,IPX,ICHA,ITOUS,ILEX,ITYP1)
  147. MSOLUT=IBOS
  148. SEGACT MSOLUT
  149. IF(IERR.NE.0) GOTO 5000
  150. GOTO 700
  151. 600 CONTINUE
  152. IF(MSOLIS(3).EQ.0) GOTO601
  153. IBOS=MSOLUT
  154. CALL VERIMO(IBOS,ILX,ICHA,ITOUS,ILEX,IPX,ITYP1)
  155. IF(IERR.NE.0) GOTO 5000
  156. MSOLUT=IBOS
  157. SEGACT MSOLUT
  158. GOTO 700
  159. 601 CONTINUE
  160. MOTERR(1:8)='SOLUTION'
  161. MOTERR(9:16)=ITYSOL
  162. CALL ERREUR(131)
  163. C NON DISPONIBLE
  164. GOTO 5000
  165. C
  166. 700 IF( MSOLIT(ICHA).NE.2) GOTO 1002
  167. SEGDES MSOLUT
  168. ENDIF
  169. C--------------------------------------------
  170. C---CAS D UN OBJET DE TYPE TABLE ------------
  171. IF (CTYP(1:5).EQ.'TABLE') THEN
  172. ICHA =0
  173. MTAB1=ISTA
  174. LBO=0
  175. I0=1
  176. IRET1=0
  177. C --- ON PREND LA PREMIERE TABLE (PAS DE TEMPS 1)
  178. CALL ACCTAB (ISTA ,'ENTIER',I0,X0,CHAR0,L0,IRET0,
  179. 1 'TABLE',I1,X1,CHAR1,L1,IRET1)
  180. IBOBO=IRET1
  181. CALL CHTCHA (MCHA,LCHALU,IBOBO,ICHA )
  182. IF(ICHA.EQ.0) THEN
  183. MOTERR(1:8)='TABLE'
  184. MOTERR(9:26)=MCHA(1:8)
  185. MOTERR(30:38)=MCHA
  186. CALL ERREUR(235)
  187. C ERREUR DANS LE TYPE DE CHAMP
  188. GOTO 5000
  189. ENDIF
  190. C **** VERIFS DE COMPATIBILITE IPX,ILX, MTABLE... EN RETOUR :
  191. C **** DANS IPX LE LISTREEL A METTRE DANS IPROGX
  192. C **** DANS ILEX LE LISTENTI QUI CONTIENT LES NUMERO DES CHAMPS
  193. CALL VERITA(ISTA,IPX,ICHA,ITOUS,ILEX,ITYP1)
  194. IF(IERR.NE.0) GOTO 5000
  195. ENDIF
  196. C **** LA SORTIE PORTE SUR DES CHPOINTS. ON FABRIQUE NUMOO LE TABLEAU
  197. C *** DE SORTIE: LECTURE D'UN POINT OU D'UN MATTAC OU D'UN MODE OU
  198. C **** D'UN CHPOINT OU D'UN MELEME
  199. C
  200. CALL LIROBJ('POINT ',IRET,0,IRETOU)
  201. IF(IRETOU.NE.0) THEN
  202. ITYPE='POINT'
  203. GOTO 10
  204. ENDIF
  205. CALL LIROBJ('MAILLAGE',IRET,0,IRETOU)
  206. IF(IRETOU.NE.0) THEN
  207. ITYPE='MAILLAGE'
  208. GOTO 10
  209. ENDIF
  210. CALL LIROBJ('CHPOINT ',IRET,0,IRETOU)
  211. IF(IRETOU.NE.0) THEN
  212. ITYPE='CHPOINT'
  213. GOTO 10
  214. ENDIF
  215. CALL LIROBJ('ATTACHE ',IRET,0,IRETOU)
  216. IF(IRETOU.NE.0) THEN
  217. ITYPE='ATTACHE'
  218. GOTO 10
  219. ENDIF
  220. CALL LIROBJ('SOLUTION',IRET,0,IRETOU)
  221. IF(IRETOU.NE.0) THEN
  222. ITYPE='SOLUTION'
  223. GOTO 10
  224. ENDIF
  225. CALL LIRTAB('BASE_MODALE',IRET,0,IRETOU)
  226. IF(IRETOU.NE.0) THEN
  227. ITYPE='TABLE '
  228. GOTO 10
  229. ENDIF
  230. C
  231. CALL ERREUR(248)
  232. C ON NE TROUVE PAS LE SUPPORT QUI CONTIENT LES POINTS
  233. GOTO 5000
  234. C
  235. 10 CONTINUE
  236. CALL EVNUMO(ITYPE,IRET,NOMCO,IBOO)
  237. IF(IERR.NE.0) GOTO 5000
  238. C
  239. C *** FABRICATION DU( OU DES) PROG CORRESPONDANT AU TABLEAU NUMOO
  240. C *** ET AUX INSTANTS ILEX (ILEX EST TUE DANS EVOL1)
  241. C
  242. CALL EVOL1(IBOO,ILEX)
  243. NUMOO=IBOO
  244. IF(IERR.NE.0) GOTO 5000
  245. GOTO 3000
  246. C
  247. C *** LA SORTIE PORTE SUR DES CHAMELEM
  248. C
  249. 1002 CONTINUE
  250. C OPTION NON DISPONIBLE
  251. CALL ERREUR(19)
  252. GOTO 5000
  253. C
  254. 3000 CONTINUE
  255. C
  256. C *** INITIALISATION DE MEVOLL
  257. C
  258. N=NUMO(/1)
  259. SEGINI MEVOLL
  260. ITYEVO='REEL'
  261. TI(1:72)=TITREE
  262. IEVTEX=TI
  263. DO 2080 I=1,NUMO(/1)
  264. SEGINI KEVOLL
  265. TYPX='LISTREEL'
  266. TYPY='LISTREEL'
  267. IPROGX=IPX
  268. IPROGY=KLIST(I)
  269. NOMEVX=ITYP1
  270. NOMEVY(1:4)=MCHA
  271. WRITE(NOMEVY(5:8),FMT='(I4)') NUMO(I)
  272. NOMEVY(9:12)=NUDDL(I)
  273. c KEVTEX=TI
  274. IF(ITIT1.EQ.0) MTIT1(1:12)=NOMEVY(1:12)
  275. KEVTEX=MTIT1
  276. NUMEVX=ICOUL
  277. NUMEVY='REEL'
  278. SEGDES KEVOLL
  279. IEVOLL(I)=KEVOLL
  280. 2080 CONTINUE
  281. SEGDES MEVOLL
  282. SEGSUP NUMOO
  283. CALL ECROBJ('EVOLUTIO',MEVOLL)
  284. 5000 CONTINUE
  285. RETURN
  286. END
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  

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