Télécharger prchan.eso

Retour à la liste

Numérotation des lignes :

prchan
  1. C PRCHAN SOURCE GOUNAND 25/11/12 21:15:41 12399
  2.  
  3. SUBROUTINE PRCHAN
  4.  
  5. C--------------------------------------------------------------------
  6. C Ce sous programme permet :
  7. C
  8. C - De changer les elements d'un maillage
  9. C
  10. C - De convertir un MCHAML en CHPOINT (mot cle CHPO)
  11. C
  12. C - De convertir un CHPOINT en MCHAML (mot cle CHAM)
  13. C
  14. C - De changer le support d'un MCHAML
  15. C (mots cles NOEUDS, GRAVITE, RIGIDITE, MASSE et STRESSES)
  16. C
  17. C - De changer l'attribut d'un champ de points
  18. C
  19. C - De changer le nom du constituant d'un champ par element ou d un modele
  20. C
  21. C - De changer une rigidite cree par RELA en rigidite de dependence
  22. C
  23. C - Changer la casse d'un mot
  24. C--------------------------------------------------------------------
  25.  
  26. IMPLICIT INTEGER(I-N)
  27. IMPLICIT REAL*8(A-H,O-Z)
  28.  
  29.  
  30. -INC PPARAM
  31. -INC CCOPTIO
  32. -INC CCNOYAU
  33. -INC CCHAMP
  34. -INC CCGEOME
  35.  
  36. -INC SMELEME
  37. -INC SMLENTI
  38. -INC SMCHPOI
  39. -INC SMCHAML
  40. -INC SMRIGID
  41. -INC SMMODEL
  42. -INC SMLMOTS
  43. -INC SMCOORD
  44.  
  45. PARAMETER (NTYP=31,LATRI=4,NLIG=9,NMOY=3)
  46. CHARACTER*8 LISTYP(NTYP)
  47. CHARACTER*4 LATRIB(LATRI)
  48. CHARACTER*4 LISMAT(3), LISCOM(2),LISMUL(2)
  49. CHARACTER*4 MOTLIG(NLIG), MOMOYE(NMOY)
  50. CHARACTER*72 CHAR,CHAR1
  51. CHARACTER*8 CHAR8
  52. CHARACTER*(LONOM) CNOM1,CNOM2
  53. PARAMETER (LMOTL=512)
  54. CHARACTER*(LMOTL) MENT,MSOR
  55. CHARACTER*4 MOT1,MOT2,MOT3,MOT4
  56.  
  57.  
  58. DATA LISTYP / 'NOEUD ', 'GRAVITE ', 'RIGIDITE', 'MASSE ',
  59. & 'STRESSES', 'THERMIQU', 'FACE ', 'P1CENTRE',
  60. & 'MSOMMET ', 'CHPO ', 'CHAM ', '--------',
  61. & '--------', 'TYPE ', 'ATTRIBUT', 'CONS ',
  62. & 'DEPE ', 'COND ', 'COMP ', 'INCO ',
  63. & 'TABL ', 'MINU ', 'MAJU ', 'TITR ',
  64. & 'LEGE ', 'NOMABS ', 'NOMORD ', 'STYL ',
  65. & 'MARQ ', 'TAIL ', 'COUL '/
  66.  
  67. DATA LATRIB / 'NATU', 'INDE', 'DIFF', 'DISC' /
  68.  
  69. DATA LISMAT / 'SYME', 'ANTI', 'QUEL' /
  70. DATA LISCOM / 'COMP', 'REEL' /
  71. DATA LISMUL / 'MULT','DUPL' /
  72.  
  73. DATA MOMOYE / 'SOMM', 'MOYE','SUPP'/
  74. DATA MOTLIG / 'LIGN', 'LINE', 'QUAD', 'QUAF', 'MACR', 'CUBI',
  75. & 'DECL', 'LINB', 'SURF' /
  76.  
  77. C On a besoin du MCOORD plus loin
  78. **** SEGACT,MCOORD
  79.  
  80. ILIG=0
  81. CNOM1 = ' '
  82. CNOM2 = ' '
  83.  
  84. C --- Lecture des mots-clés de LISTYP --> IPLAC
  85. CALL LIRMOT(LISTYP,NTYP,IPLAC,0)
  86. IF (IERR.NE.0) RETURN
  87. IF (IPLAC.NE.0) GOTO 1
  88.  
  89. C
  90. C --- Lecture des mots-clés de MOTLIG --> ILIG
  91. CALL LIRMOT(MOTLIG,NLIG,ILIG,0)
  92. IF (ILIG.EQ.1) THEN
  93. CALL CHANLG
  94. RETURN
  95. ELSEIF(ILIG.EQ.2) THEN
  96. CALL CHANLI
  97. RETURN
  98. ELSEIF(ILIG.EQ.3) THEN
  99. CALL CHANQU
  100. RETURN
  101. ELSEIF(ILIG.EQ.4) THEN
  102. CALL LIROBJ('MAILLAGE',MELEME,1,IRET)
  103. CALL ACTOBJ('MAILLAGE',MELEME,1)
  104. IF(IRET.EQ.0)RETURN
  105. CALL KQCEST(MELEME,IKR)
  106. CALL ACTOBJ('MAILLAGE',MELEME,1)
  107. CALL ECROBJ('MAILLAGE',MELEME)
  108. IF(IKR.EQ.2)THEN
  109. CALL CHANQU
  110. ENDIF
  111. CALL C20227
  112. RETURN
  113. ELSEIF(ILIG.EQ.5) THEN
  114. * CMACRO est buggé (position du point centre foireuse
  115. * On fait comme QUAF
  116. * CALL CMACRO
  117. * RETURN
  118. CALL LIROBJ('MAILLAGE',MELEME,1,IRET)
  119. CALL ACTOBJ('MAILLAGE',MELEME,1)
  120. IF(IRET.EQ.0)RETURN
  121. CALL KQCEST(MELEME,IKR)
  122. CALL ACTOBJ('MAILLAGE',MELEME,1)
  123. CALL ECROBJ('MAILLAGE',MELEME)
  124. IF(IKR.EQ.2)THEN
  125. CALL CHANQU
  126. ENDIF
  127. CALL C20227
  128. RETURN
  129. ELSEIF(ILIG.EQ.6) THEN
  130. CALL CCUBIC
  131. RETURN
  132. ELSEIF(ILIG.EQ.7) THEN
  133. CALL CQ2L
  134. RETURN
  135. ELSEIF(ILIG.EQ.8) THEN
  136. CALL CLINB
  137. RETURN
  138. ELSEIF(ILIG.EQ.9) THEN
  139. CALL ENVVO2(1)
  140. RETURN
  141. ENDIF
  142. C
  143. C --- Lecture parmi la liste des NOMS --> ITY
  144. CALL LIRMOT(NOMS,NOMBR,ITY,0)
  145. IF (ITY.EQ.0) ITY=ILCOUR
  146. CALL LIROBJ('MAILLAGE',MELEME,0,IRETOU)
  147. IF (IRETOU.EQ.0) GOTO 99
  148. CALL ACTOBJ('MAILLAGE',MELEME,1)
  149.  
  150. CALL QUENOM(CNOM1)
  151. C CB On ajoute la lecture d'un LISTENTIER optionnel pour indiquer
  152. C quels N-uplet de noeuds du MELEME vont constituer la connectivité
  153. C du MAILLAGE final
  154. CALL LIROBJ('LISTENTI',MLENTI,0,IRETOU)
  155. IF (IRETOU.NE.0) THEN
  156. SEGACT,MLENTI
  157. CALL QUENOM(CNOM2)
  158. ITYP1 = MELEME.ITYPEL
  159. IF (ITYP1 .NE. 1) THEN
  160. CALL ERREUR(16)
  161. RETURN
  162. ENDIF
  163. NBEL1 = MELEME.NUM(/2)
  164. JG = LECT(/1)
  165. C Cas des ELEMENTS POLY et MULT
  166. IF (NOMS(ITY).EQ.'POLY' .OR. NOMS(ITY).EQ.'MULT') THEN
  167. NBNN = JG
  168. NBELEM = 1
  169. C Cas des ELEMENTS classiques
  170. ELSE
  171. NBNN = NBNNE(ITY)
  172. NBELEM = JG/NBNN
  173. IF (MOD(JG,NBNN) .NE. 0) THEN
  174. MOTERR(1:8) =CNOM2
  175. MOTERR(9:12)=NOMS(ITY)
  176. CALL ERREUR(1057)
  177. RETURN
  178. ENDIF
  179. ENDIF
  180.  
  181. NBSOUS=0
  182. NBREF =0
  183. SEGINI,IPT1
  184. IPT1.ITYPEL=ITY
  185. DO 259 IEL=1,NBELEM
  186. J=(IEL-1) * NBNN
  187. IPT1.ICOLOR(IEL)=IDCOUL
  188. DO 2591 I=1,NBNN
  189. IELEM = MLENTI.LECT(J+I)
  190. IF((IELEM .GT. NBEL1) .OR. (IELEM .LE. 0)) THEN
  191. INTERR(1) =IELEM
  192. MOTERR(1:8)=CNOM1
  193. CALL ERREUR(1058)
  194. SEGSUP,IPT1
  195. RETURN
  196. ENDIF
  197. IPT1.NUM(I,IEL)=MELEME.NUM(1,IELEM)
  198. 2591 CONTINUE
  199. 259 CONTINUE
  200. MELEME = IPT1
  201. ELSE
  202. CALL CHANGE(MELEME,ITY)
  203. IF (IERR.NE.0) RETURN
  204. ENDIF
  205. CALL ACTOBJ('MAILLAGE',MELEME,1)
  206. CALL ECROBJ('MAILLAGE',MELEME)
  207. RETURN
  208.  
  209. C PAS D OPERANDE CORRECTE TROUVE --> ERREUR
  210. 99 CONTINUE
  211. CALL QUETYP(MOTERR(1:8),0,IRETOU)
  212. IF (IRETOU.NE.0) THEN
  213. CALL ERREUR (39)
  214. ELSE
  215. CALL ERREUR(533)
  216. ENDIF
  217. RETURN
  218. C
  219. C OPERANDE CORRECTE TROUVE dans LISTYP : on aiguille
  220. C
  221. 1 CONTINUE
  222. GOTO (300, 300, 300, 300, 300, 300, 300, 300, 300, 100,
  223. & 800, 400, 600,1200,1300,1400,1500,1500,1600,1700,
  224. & 2100,2200,2200,3000,3000,3000,3000,3000,3000,3000,3000),IPLAC
  225.  
  226. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  227. C CHANGEMENT D'UN MCHAML EN CHPOINT
  228. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  229. 100 CALL LIRMOT(MOMOYE,NMOY,IMOY,0)
  230. IF(IMOY.EQ.0) IMOY=2
  231. IMOY=IMOY-1
  232. c MOYENNE(par defaut) : IMOY=1 SOMME : IMOY=0 GAUSS:IMOY=2
  233.  
  234. C Tente la lecture optionnelle d'un CHPOINT
  235. CALL LIROBJ('CHPOINT ',IPOI2,0,IRETO3)
  236. IF(IERR.NE.0) RETURN
  237. IF(IRETO3.EQ.1) THEN
  238. CALL ACTOBJ('CHPOINT ',IPOI2,1)
  239. C Tente la lecture optionnelle d'un MMODEL
  240. CALL LIROBJ('MMODEL ',IPOI1,0,IRETO1)
  241. IF(IRETO1 .EQ. 1)CALL ACTOBJ('MMODEL ',IPOI1,1)
  242. IF(IERR.NE.0) RETURN
  243. C L'OBJET fourni etait deja un CHPOINT on crée un CHPOINT dupliqué
  244. MCHPOI=IPOI2
  245. SEGINI,MCHPO1=MCHPOI
  246. SEGACT,MCHPO1*NOMOD
  247. CALL ACTOBJ('CHPOINT ',MCHPO1,1)
  248. CALL ECROBJ('CHPOINT ',MCHPO1)
  249. IF(IERR.NE.0) RETURN
  250. RETURN
  251. ENDIF
  252.  
  253. C Tente la lecture obligatoire d'un MMODEL
  254. CALL LIROBJ('MMODEL ',IPOI1,1,IRETO1)
  255. CALL ACTOBJ('MMODEL ',IPOI1,1)
  256. IF(IERR.NE.0) RETURN
  257.  
  258. C Tente la lecture obligatoire d'un MCHAML
  259. CALL LIROBJ('MCHAML ',IPOI2,1,IRETO2)
  260. CALL ACTOBJ('MCHAML ',IPOI2,1)
  261. IF(IERR.NE.0) RETURN
  262. CALL REDUAF(IPOI2,IPOI1,IPOI3,0,IRET,KERR)
  263. IF (IRET .EQ. 0) THEN
  264. CALL ERREUR (KERR)
  265. IF(IERR .NE. 0) RETURN
  266. ELSE
  267. IPOI2 = IPOI3
  268. ENDIF
  269.  
  270. cbp, 2018-03-26 : option SUPPORT pour sortir un chpoint defini aux points
  271. c de Gauss sans changer de support (but : tracer)
  272. IF(IMOY.EQ.2) THEN
  273. * Lecture éventuelle d'un CHAMELEM de caractéristiques
  274. IPCARA=0
  275. CALL LIROBJ('MCHAML ',IPCARA,0,IRET)
  276. IF(IRET.EQ.1) CALL ACTOBJ('MCHAML ',IPCARA,1)
  277. * Appel a la SUBROUTINE de travail
  278. CALL CHAPO(IPOI1,IPOI2,IPCARA,IPOI4,IRET)
  279. CALL ACTOBJ('CHPOINT',IPOI4,1)
  280. IF(IERR.EQ.0) CALL ECROBJ('CHPOINT ',IPOI4)
  281. RETURN
  282. ENDIF
  283.  
  284. CALL CHASUP(IPOI1,IPOI2,IPOI3,IRT2,1)
  285. IF(IRT2.NE.0) THEN
  286. CALL ERREUR(IRT2)
  287. RETURN
  288. ENDIF
  289. CALL CHAMPO(IPOI3,IMOY,IPOI4,IRET)
  290. C A PRIORI LE CHPO EST DE NATURE DIFFUSE
  291. MCHPOI = IPOI4
  292. SEGACT MCHPOI*MOD
  293. JATTRI(1) = 1
  294. CALL ACTOBJ('CHPOINT ',IPOI4,1)
  295. CALL ECROBJ('CHPOINT ',IPOI4)
  296. RETURN
  297.  
  298. 400 CONTINUE
  299. 600 CONTINUE
  300. RETURN
  301.  
  302. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  303. C CHANGEMENT D'UN CHPOINT EN MCHAML A PARTIR D'UN MODELE
  304. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  305. C Lecture éventuelle d'un lieu support
  306. 800 CALL LIRMOT(LISTYP,9,ISUP,0)
  307. IF (IERR.NE.0) RETURN
  308. IPLAC = ISUP
  309. C Par defaut, le support est aux noeuds
  310. IF (IPLAC.EQ.0) IPLAC = 1
  311.  
  312. C Tente la lecture optionnelle d'un MCHAML
  313. CALL LIROBJ('MCHAML ',IPOI2,0,IRETOU)
  314. IF(IRETOU.EQ.1) CALL ACTOBJ('MCHAML ',IPOI2,1)
  315. IF (IERR.NE.0) RETURN
  316. IF (IRETOU.NE.0) THEN
  317. CALL REFUS
  318. GOTO 300
  319. ENDIF
  320.  
  321. CALL LIROBJ('MMODEL ',IPOI1,0,IRETOU)
  322. IF (IERR.NE.0) RETURN
  323. IF (IRETOU.EQ.0) GOTO 900
  324. CALL ACTOBJ('MMODEL ',IPOI1,1)
  325.  
  326. CALL LIROBJ('CHPOINT ',IPOI2,1,IRETOU)
  327. CALL ACTOBJ('CHPOINT ',IPOI2,1)
  328. IF(IERR.NE.0) RETURN
  329.  
  330. LONS=0
  331. MMODEL=IPOI1
  332. N1=KMODEL(/1)
  333. DO 41 L=1,N1
  334. IMODEL=KMODEL(L)
  335. IF (FORMOD(1).EQ.'NAVIER_STOKES') LONS=LONS+1
  336. 41 CONTINUE
  337.  
  338. IF(LONS.EQ.0) THEN
  339. C
  340. C Tente la lecture optionnelle du Sous_Type
  341. CALL LIRCHA(CHAR,0,IRETOU)
  342. IF (IERR.NE.0) RETURN
  343. IF (IRETOU.EQ.0) THEN
  344. CHAR=' '
  345. IRETOU=1
  346. ENDIF
  347.  
  348. CALL CHAME1(0,IPOI1,IPOI2,CHAR(1:IRETOU),IPOI3,IPLAC)
  349. IF (IERR.NE.0) RETURN
  350.  
  351. ELSEIF(LONS.EQ.N1) THEN
  352. C Traitement specifique dans le cas d'un objet modele de
  353. C type Navier-Stokes
  354. CALL KCHAM1(IPOI1,IPOI2,IPOI3)
  355. IF (IERR.NE.0) RETURN
  356. IF (ISUP.NE.0) THEN
  357. CALL CHASPG(IPOI1,IPOI3,IPOI4,IRET,ISUP)
  358. IF (IRET.NE.0) CALL ERREUR(IRET)
  359. IF (IERR.NE.0) RETURN
  360. IPOI3=IPOI4
  361. ENDIF
  362. ENDIF
  363. CALL ACTOBJ('MCHAML ',IPOI3,1)
  364. CALL ECROBJ('MCHAML ',IPOI3)
  365. RETURN
  366.  
  367. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  368. C CHANGEMENT DE CHPOINT EN MCHAML A PARTIR D'UN MAILLAGE
  369. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  370. C Tente la lecture obligatoire d'un MAILLAGE
  371. 900 CALL LIROBJ('MAILLAGE',IPOI1,1,IRETO1)
  372. CALL ACTOBJ('MAILLAGE',IPOI1,1)
  373. IF(IERR.NE.0) RETURN
  374.  
  375. C Tente la lecture obligatoire d'un CHPOINT
  376. CALL LIROBJ('CHPOINT ',IPOI2,1,IRETO2)
  377. CALL ACTOBJ('CHPOINT ',IPOI2,1)
  378. IF(IERR.NE.0) RETURN
  379.  
  380. C Tente la lecture optionnelle du Sous_Type
  381. CALL LIRCHA(CHAR,0,IRETOU)
  382. IF(IERR.NE.0) RETURN
  383. C
  384. IF (IRETOU.EQ.0) THEN
  385. CHAR ='SCALAIRE'
  386. IRETOU=8
  387. ENDIF
  388. C
  389. CALL CHAME1(IPOI1,0,IPOI2,CHAR(1:IRETOU),IPOI3,1)
  390. IF(IERR.NE.0) RETURN
  391. CALL ACTOBJ('MCHAML ',IPOI3,1)
  392. CALL ECROBJ('MCHAML ',IPOI3)
  393. RETURN
  394.  
  395. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  396. C CHANGEMENT DE SUPPORT D'UN MCHAML
  397. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  398. 300 CALL LIROBJ('MCHAML ',IPOI2,1,IRETOU)
  399. CALL ACTOBJ('MCHAML ',IPOI2,1)
  400. IF (IERR.NE.0) RETURN
  401.  
  402. CALL LIROBJ('MMODEL ',IPOI1,1,IRETOU)
  403. CALL ACTOBJ('MMODEL ',IPOI1,1)
  404. IF(IERR.NE.0) RETURN
  405.  
  406. LONS=0
  407. MMODEL=IPOI1
  408. N1=KMODEL(/1)
  409. DO 42 L=1,N1
  410. IMODEL=KMODEL(L)
  411. IF(FORMOD(1).EQ.'NAVIER_STOKES') LONS=LONS+1
  412. 42 CONTINUE
  413.  
  414. MCHELM =IPOI2
  415.  
  416. IF(LONS.EQ.0) THEN
  417. C cas normal
  418. C On procède au REDUAF
  419. CALL REDUAF(IPOI2,IPOI1,IPOI3,0,IRET,KERR)
  420. IF (IRET .EQ. 0) THEN
  421. CALL ERREUR (KERR)
  422. IF (IERR .NE. 0) RETURN
  423. ENDIF
  424. IPOI2 = IPOI3
  425.  
  426. CALL CHASUP(IPOI1,IPOI2,IPOI3,IRT2,IPLAC)
  427. IF(IRT2.NE.0) THEN
  428. CALL ERREUR(IRT2)
  429. RETURN
  430. ENDIF
  431. ELSEIF(LONS.EQ.N1) THEN
  432. C Traitement specifique dans le cas d'un objet modele de
  433. C type Navier-Stokes
  434. CALL CHASPG(IPOI1,IPOI2,IPOI3,IRT2,IPLAC)
  435. IF (IRT2.NE.0) CALL ERREUR(IRT2)
  436. IF (IERR.NE.0) RETURN
  437. ENDIF
  438.  
  439. C Tente la lecture optionnelle du Sous_Type
  440. CALL LIRCHA(CHAR,0,IRETOU)
  441. IF(IERR.NE.0) RETURN
  442. IF (IRETOU .NE.0) THEN
  443. IPOI1=IPOI3
  444. GOTO 1201
  445.  
  446. ELSE
  447. C On remet le TITCHE du champ d'entree
  448. SEGACT MCHELM
  449. L1=TITCHE(/1)
  450.  
  451. MCHEL1 = IPOI3
  452. SEGACT MCHEL1*MOD
  453. N1=MCHEL1.INFCHE(/1)
  454. N3=MCHEL1.INFCHE(/2)
  455. SEGADJ,MCHEL1
  456. MCHEL1.TITCHE=MCHELM.TITCHE
  457. ENDIF
  458. C
  459. CALL ACTOBJ('MCHAML ',IPOI3,1)
  460. CALL ECROBJ('MCHAML ',IPOI3)
  461. RETURN
  462.  
  463. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  464. C CHANGEMENT DE TITRE (mot clé 'TYPE') D'UN MCHAML
  465. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  466. 1200 CALL LIROBJ('MCHAML ',IPOI1,0,IRETOU)
  467. c mot clé 'TYPE' aussi utilisé pour RIGIDITE
  468. IF(IRETOU.EQ.0) GOTO 1250
  469. CALL ACTOBJ('MCHAML ',IPOI1,1)
  470. CALL LIRCHA(CHAR,1,IRETOU)
  471. IF(IERR.NE.0) RETURN
  472.  
  473. 1201 CALL CHATIT(IPOI1,CHAR(1:IRETOU),IPOI2)
  474. CALL ACTOBJ('MCHAML ',IPOI2,1)
  475. CALL ECROBJ('MCHAML ',IPOI2)
  476. RETURN
  477.  
  478. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  479. C CHANGEMENT DU TYPE D'UNE RIGIDITE
  480. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  481. 1250 CALL LIROBJ('RIGIDITE',IRIG,1,IRETOU)
  482. IF (IERR.NE.0) RETURN
  483. RI1 = IRIG
  484. SEGINI,MRIGID=RI1
  485. CALL LIRCHA(CHAR8,1,IRETOU)
  486. IF(IERR.NE.0) RETURN
  487. MTYMAT = CHAR8
  488. SEGDES,MRIGID
  489. CALL ECROBJ('RIGIDITE',MRIGID)
  490. RETURN
  491.  
  492. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  493. C CHANGEMENT DE L'ATTRIBUT D'UN CHAMP DE POINTS
  494. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  495. 1300 CONTINUE
  496. C
  497. CALL LIRMOT(LATRIB,LATRI,IPLAC,1)
  498. IF (IERR.NE.0) RETURN
  499. CALL LIROBJ('CHPOINT ',IPOI1,1,IRETOU)
  500. CALL ACTOBJ('CHPOINT ',IPOI1,1)
  501. IF (IERR.NE.0) RETURN
  502. MCHPOI = IPOI1
  503. C CHANGEMENT DE NATURE
  504. IF ( IPLAC .EQ. 1 ) THEN
  505. CALL LIRMOT(LATRIB,LATRI,IPLAC,1)
  506. IPLAC = IPLAC - 2
  507. SEGINI, MCHPO1=MCHPOI
  508. DO iou=1,mchpo1.ipchp(/1)
  509. msoupo=mchpo1.ipchp(iou)
  510. segini,msoup1=msoupo
  511. mchpo1.ipchp(iou)=msoup1
  512. ENDDO
  513. IPOI2 = MCHPO1
  514. MCHPO1.JATTRI(1) = IPLAC
  515. CALL ACTOBJ('CHPOINT ',IPOI2,1)
  516. CALL ECROBJ('CHPOINT ',IPOI2)
  517. ELSE
  518. MOTERR(1:4)='NATU'
  519. CALL ERREUR(396)
  520. RETURN
  521. ENDIF
  522. RETURN
  523.  
  524. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  525. C CHANGEMENT DE CONSTITUANT D'UN MCHAML ou d'un MMODEL
  526. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  527. 1400 CALL LIROBJ('MCHAML ',IPOI1,0,IRETOU)
  528. IF (IERR.NE.0) RETURN
  529. IF (iretou.eq.1) THEN
  530. CALL ACTOBJ('MCHAML ',IPOI1,1)
  531. MCHELM = IPOI1
  532. SEGINI , MCHEL1 = MCHELM
  533. CALL LIRCHA(CHAR,1,LCHAR)
  534. IF (IERR.NE.0) RETURN
  535. N1 = MCHEL1.CONCHE(/2)
  536. CHAR1 = MCHEL1.CONCHE(1)
  537. DO 1410 I=1,N1
  538. IF ( MCHEL1.CONCHE(I) .NE. CHAR1) THEN
  539. CALL ERREUR(716)
  540. SEGSUP MCHEL1
  541. RETURN
  542. ENDIF
  543. 1410 CONTINUE
  544.  
  545. DO 1420 I=1,N1
  546. MCHEL1.CONCHE(I) = CHAR
  547. 1420 CONTINUE
  548. IPOI1 = MCHEL1
  549. CALL ACTOBJ('MCHAML ',IPOI1,1)
  550. CALL ECROBJ('MCHAML ',IPOI1)
  551. RETURN
  552.  
  553. ELSE
  554. CALL LIROBJ('MMODEL ',IPOI1,1,IRETOU)
  555. CALL ACTOBJ('MMODEL ',IPOI1,1)
  556. IF (ierr.ne.0) RETURN
  557. mmode1 = ipoi1
  558. n1 = mmode1.kmodel(/1)
  559. imode1 = mmode1.kmodel(1)
  560. char1(1:LCONMO) = imode1.conmod
  561. IF (n1.gt.1) THEN
  562. DO ikmo = 2,n1
  563. imode2 = mmode1.kmodel(ikmo)
  564. IF (char1(1:LCONMO).ne.imode2.conmod(1:LCONMO)) THEN
  565. CALL erreur(732)
  566. RETURN
  567. ENDIF
  568. ENDDO
  569. ENDIF
  570. segini,mmodel = mmode1
  571. CALL LIRCHA(CHAR,1,LCHAR)
  572. IF (IERR.NE.0) RETURN
  573. DO ikmo = 1,n1
  574. imode1 = kmodel(ikmo)
  575. segini,imodel = imode1
  576. NFOR=FORMOD(/2)
  577. C CAS DARCY OU NAVIER ON OUBLIE LA TABLE DE PRECONDITIONNEMENT
  578. CALL PLACE (FORMOD,NFOR,IDARC,'DARCY')
  579. CALL PLACE (FORMOD,NFOR,IEULE,'EULER')
  580. CALL PLACE (FORMOD,NFOR,INAVI,'NAVIER_STOKES')
  581. IF((IDARC.NE.0).OR.(INAVI.NE.0).OR.(IEULE.NE.0)) INFMOD(2)=0
  582. kmodel(ikmo) = imodel
  583. conmod = char
  584. ENDDO
  585. ipoi1 = mmodel
  586. CALL ACTOBJ('MMODEL ',IPOI1,1)
  587. CALL ECROBJ('MMODEL ',ipoi1)
  588. RETURN
  589. ENDIF
  590.  
  591. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  592. C CHANGEMENT D UNE RIGIDITE CREE PAR RELATION
  593. C EN MATRICE DE DEPENDANCE OU DE CONDENSATION
  594. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  595. 1500 CALL LIROBJ('RIGIDITE',IRIG,1,iret)
  596. IF (IERR.NE.0) RETURN
  597.  
  598. C verification que la rigidité ne contient que des relation
  599. C c'est à dire n'est supportée que par des maillage de type 22
  600. C
  601. MRIGID = IRIG
  602. SEGACT, MRIGID*NOMOD
  603. DO 1510 I=1,IRIGEL(/2)
  604. MELEME = IRIGEL(1,I)
  605. SEGACT , MELEME*NOMOD
  606. IF (ITYPEL.NE.22) THEN
  607. CALL ERREUR(889)
  608. RETURN
  609. ENDIF
  610. 1510 CONTINUE
  611. C
  612. C matrice de depedence
  613. MRIGID = IRIG
  614. SEGACT MRIGID
  615. segini , ri1=MRIGID
  616. iri1 = ri1
  617. C nrige=8
  618. nrigel=irigel(/2)
  619. segadj ri1
  620. DO 1520 i=1,nrigel
  621. ri1.irigel(8,i)=1
  622. 1520 CONTINUE
  623. segdes mrigid,ri1
  624. C
  625. IF(iplac.eq.17) THEN
  626. CALL ECROBJ('RIGIDITE',iri1)
  627. ELSE
  628. CALL depen3(iri1,iri2)
  629. CALL dual00(iri2,iri3)
  630. CALL ECROBJ('RIGIDITE',iri3)
  631. CALL ECROBJ('RIGIDITE',iri2)
  632. ENDIF
  633. RETURN
  634. c
  635. 1600 CALL nomc
  636. RETURN
  637.  
  638. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  639. C CHANGEMENT DE NOM D'INCONNUES PRIMALE ET DUALE D'UNE MATRICE
  640. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  641. 1700 CONTINUE
  642. CALL LIROBJ('MATRIK ',IPO1,0,IRETOU)
  643. IF (IRETOU.NE.0) THEN
  644. CALL REFUS
  645. CALL MACHIN
  646. RETURN
  647. ENDIF
  648. C lecture du mot cle COMPLEXE ou REEL ou rien
  649. CALL LIRMOT(LISCOM,2,ival,0)
  650. CALL LIROBJ('RIGIDITE',RI1,1,iretou)
  651. IF( ierr.ne.0) RETURN
  652. IF(IIMPI.ge.3) write(IOIMP,*) '>>> CHAN INCO de ',RI1,' <<<'
  653.  
  654. c ---Cas de 4 LISTMOTS ou 4 MOT ---
  655. IF(IVAL.EQ.0 )THEN
  656. CALL LIROBJ('LISTMOTS',mlmot1,0,ilmots)
  657. IF (ilmots.eq.0) then
  658. CALL LIRCHA(MOT1,1,iretou)
  659. IF( ierr.ne.0) RETURN
  660. CALL LIRCHA(MOT2,1,iretou)
  661. IF( ierr.ne.0) RETURN
  662. CALL LIRCHA(MOT3,1,iretou)
  663. IF( ierr.ne.0) RETURN
  664. CALL LIRCHA(MOT4,1,iretou)
  665. IF( ierr.ne.0) RETURN
  666. JGN=4
  667. JGM=1
  668. segini mlmot1,mlmot2,mlmot3,mlmot4
  669. mlmot1.mots(1)=mot1
  670. mlmot2.mots(1)=mot2
  671. mlmot3.mots(1)=mot3
  672. mlmot4.mots(1)=mot4
  673. ELSE
  674. CALL LIROBJ('LISTMOTS',mlmot2,1,iretou)
  675. IF( ierr.ne.0) RETURN
  676. CALL LIROBJ('LISTMOTS',mlmot3,1,iretou)
  677. IF( ierr.ne.0) RETURN
  678. CALL LIROBJ('LISTMOTS',mlmot4,1,iretou)
  679. IF( ierr.ne.0) RETURN
  680. ENDIF
  681. C lecture de la nature SYME ANTI ...
  682. IPLAMA=0
  683. CALL LIRMOT(LISMAT,3,IPLAMA,0)
  684. C Par defaut : 'NON SYMETRIQUE'
  685. IF (IPLAMA.EQ.0) IPLAMA=3
  686.  
  687. C lecture du mot cle MULT ou DUPL (ou rien)
  688. CALL LIRMOT(LISMUL,2,IPLMUL,0)
  689. C
  690. segact mlmot1,mlmot2,mlmot3,mlmot4
  691. il1=mlmot1.mots(/2)
  692. il2=mlmot2.mots(/2)
  693. il3=mlmot3.mots(/2)
  694. il4=mlmot4.mots(/2)
  695. IF(il1.ne.il2.or.il3.ne.il4) THEN
  696. *dbg write(ioimp,*) 'il1,il2,il3,il4=',il1,il2,il3,il4
  697. CALL erreur(854)
  698. RETURN
  699. ENDIF
  700. IF(IIMPI.ge.3) write(IOIMP,*)
  701. $ 'cas de 4 LISTMOTS ou 4 MOTS fournis '
  702.  
  703. c ---Cas COMPLEXE/REEL---
  704. ELSE
  705. JGN=4
  706. JGM=lnomdd
  707. segini mlmot1,mlmot2,mlmot3,mlmot4
  708. DO jkl=1,lnomdd
  709. mlmot1.mots(jkl)=nomdd(jkl)
  710. mlmot2.mots(jkl)(1:1)='I'
  711. mlmot2.mots(jkl)(2:4)=nomdd(jkl)(1:3)
  712. mlmot3.mots(jkl)=nomdu(jkl)
  713. mlmot4.mots(jkl)(1:1)='I'
  714. mlmot4.mots(jkl)(2:4)=nomdu(jkl)(1:3)
  715. ENDDO
  716. IF(IIMPI.ge.3) write(IOIMP,*) 'cas COMPLEXE/REEL'
  717. ENDIF
  718.  
  719. C Creation du MRIGID de sortie = presque copie de l entree
  720. segini,mrigid=ri1
  721. ichole=0
  722. imgeo1=0
  723. imgeo2=0
  724. isupeq=0
  725. jrcond=0
  726. jrdepp=0
  727. jrdepd=0
  728. jrelim=0
  729. jrgard=0
  730. jrtot=0
  731. DO 1701 k=1,irigel(/2)
  732. irigel(7,k) = IPLAMA-1
  733. C creation des XMATRI (avec la symetrie identique a MRIGID.irigel(4,k))
  734. XMATR1=irigel(4,k)
  735. segini,XMATRI=XMATR1
  736. irigel(4,k)=XMATRI
  737. XMATRI.SYMRE=irigel(7,k)
  738. XMATRI.SYMVER=0
  739. c creation et modif du DESCR
  740. des1=irigel(3,k)
  741. segini,descr=des1
  742. irigel(3,k)=descr
  743. nbinc=lisinc(/2)
  744. nbdua=lisdua(/2)
  745. DO 1702 ka=1,nbinc
  746. IF(lisinc(ka).EQ.'LX '.and.iplmul.eq.0) go to 1702
  747. DO 1703 kb=1,il1
  748. IF( lisinc(ka).eq.mlmot1.mots(kb) ) THEN
  749. lisinc(ka)=mlmot2.mots(kb)
  750. go to 1702
  751. ENDIF
  752. 1703 CONTINUE
  753. 1702 CONTINUE
  754. DO 1704 ka=1,nbdua
  755. IF( lisdua(ka).eq.'FLX '.and.iplmul.eq.0) go to 1704
  756. DO 1705 kb=1,il3
  757. IF( lisdua(ka).eq.mlmot3.mots(kb) ) THEN
  758. lisdua(ka)=mlmot4.mots(kb)
  759. go to 1704
  760. ENDIF
  761. 1705 CONTINUE
  762. 1704 CONTINUE
  763.  
  764. C on teste si c'est un LX : si oui, on crée un nouveau noeud
  765. C rem : on suppose qu'il n y a qu'1 LX par matrice et a une
  766. C position quelconque kap
  767. kap=0
  768. DO 1707 ka=1,min(nbinc,nbdua)
  769. * write(ioimp,*) 'k,ka,lisinc(ka),lisdua(ka)=',k,ka,lisinc(ka)
  770. * $ ,lisdua(ka)
  771. if (lisinc(ka).eq.'LX ') THEN
  772. kap=ka
  773. if (lisdua(ka).ne.'FLX ') THEN
  774. * SG 2025/04/28 Si uniquement l'un des deux est LX ou FLX, on
  775. * considere ceci comme une erreur
  776. CALL ERREUR(1154)
  777. RETURN
  778. endif
  779. goto 1706
  780. endif
  781. 1707 continue
  782. 1706 continue
  783. if (kap.ne.0) THEN
  784. if (iplmul.eq.2) then
  785. IF(IIMPI.ge.3) write(IOIMP,*)
  786. $ 'creation de nouveaux noeuds LX'
  787. c IF(IIMPI.ge.3) THEN
  788. c write(IOIMP,*) 'mlmot1=',(mlmot1.mots(iou),iou=1,il1)
  789. c write(IOIMP,*) 'mlmot2=',(mlmot2.mots(iou),iou=1,il2)
  790. c write(IOIMP,*) 'mlmot3=',(mlmot3.mots(iou),iou=1,il3)
  791. c write(IOIMP,*) 'mlmot4=',(mlmot4.mots(iou),iou=1,il4)
  792. c write(IOIMP,*) 'lisinc=',(lisinc(iou),iou=1,nbinc)
  793. c write(IOIMP,*) 'lisdua=',(lisdua(iou),iou=1,nbdua)
  794. c ENDIF
  795. ipt1=irigel(1,k)
  796. segini,meleme=ipt1
  797. * SG 2025/04/28 Dans les cas ou une inconnues est LX-FLX, on force
  798. * le type du MELEME a 22 (SIMPle) multiplicateur sinon, ca se passe
  799. * mal dans RESO
  800. itypel=22
  801. irigel(1,k)=meleme
  802. segact,MCOORD*MOD
  803. inp=NOELEP(kap)
  804. DO 1708 iel=1,num(/2)
  805. NBPTS=NBPTS + 1
  806. num(inp,iel)=NBPTS
  807. 1708 CONTINUE
  808. segadj,MCOORD
  809. segdes,mcoord
  810. else
  811. ipt1=irigel(1,k)
  812. segact ipt1
  813. if (ipt1.itypel.ne.22) then
  814. segini,meleme=ipt1
  815. itypel=22
  816. irigel(1,k)=meleme
  817. endif
  818. endif
  819. else
  820. * SG 2025/04/28 Si ce ne sont pas des LX, pas de type 22 mais POLY (32)
  821. ipt1=irigel(1,k)
  822. segact ipt1
  823. if (ipt1.itypel.eq.22) then
  824. segini,meleme=ipt1
  825. itypel=32
  826. irigel(1,k)=meleme
  827. endif
  828. endif
  829. * ipt1=irigel(1,k)
  830. * segact ipt1
  831. * write(ioimp,*) 'itypel=',ipt1.itypel
  832. 1701 CONTINUE
  833. IF(ival.eq.0) THEN
  834. if (ilmots.eq.0) then
  835. segsup mlmot1,mlmot2,mlmot3,mlmot4
  836. endif
  837. ELSE
  838. segsup mlmot1,mlmot2,mlmot3,mlmot4
  839. ENDIF
  840. CALL ACTOBJ('RIGIDITE',mrigid,1)
  841. CALL ECROBJ('RIGIDITE',mrigid)
  842. RETURN
  843.  
  844. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  845. C changement de presentation d'un chargement
  846. C mise sous forme table de chpoint (plus rapide pour l'opérateur TIRE)
  847. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  848. 2100 CALL chatab
  849. RETURN
  850.  
  851. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  852. C Changement de la casse d'un mot
  853. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  854. 2200 CONTINUE
  855. ICASS=IPLAC-22
  856. CALL LIRCHA(MENT,1,LENT)
  857. IF (IERR.NE.0) RETURN
  858. CALL CHCASS(MENT(1:LENT),ICASS,MSOR(1:LENT))
  859. CALL ECRCHA(MSOR(1:LENT))
  860. RETURN
  861.  
  862. 3000 CONTINUE
  863. CALL QUETYP(CHAR8,1,IRET)
  864. IF (CHAR8.NE.'CHPOINT'.AND.CHAR8.NE.'EVOLUTIO') THEN
  865. MOTERR(1:16)='CHPOINT EVOLUTIO'
  866. CALL ERREUR(471)
  867. RETURN
  868. ENDIF
  869.  
  870. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  871. C Changement de titre d'un CHPOINT
  872. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  873. IF (CHAR8.EQ.'CHPOINT ') THEN
  874. CALL LIROBJ('CHPOINT ',IP1,1,IRETOU)
  875. CALL ACTOBJ('CHPOINT ',IP1,1)
  876. IF (IERR.NE.0) RETURN
  877. CALL LIRCHA(CHAR1,1,IRETOU)
  878. MCHPO1=IP1
  879. SEGINI,MCHPOI=MCHPO1
  880. MOCHDE=CHAR1
  881. CALL ACTOBJ('CHPOINT ',MCHPOI,1)
  882. CALL ECROBJ('CHPOINT ',MCHPOI)
  883.  
  884. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  885. C Changement des noms d'une evolution
  886. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  887. ELSEIF (CHAR8.EQ.'EVOLUTIO') THEN
  888. CALL LIROBJ('EVOLUTIO',IEV1,1,IRETOU)
  889. IF (IERR.NE.0) RETURN
  890. CALL ACTOBJ('EVOLUTIO',IEV1,1)
  891.  
  892. IFOIS = 0
  893. 4000 CONTINUE
  894. ITIT1=IPLAC-23
  895. IENT1=0
  896. K=0
  897. char1 = ' '
  898. IF (ITIT1.LT.5) THEN
  899. CALL LIRCHA(CHAR1,1,IRETOU)
  900. IF (IERR.NE.0) RETURN
  901. CALL PLACE(LISTYP,NTYP,IPLAC,CHAR1)
  902. IF (IPLAC.NE.0) THEN
  903. MOTERR(1:4) = LISTYP(ITIT1+23)
  904. CALL ERREUR(166)
  905. RETURN
  906. ENDIF
  907. ELSE IF (ITIT1.EQ.5) THEN
  908. CALL LIRCHA(CHAR1,0,IRETOU)
  909. CALL PLACE(LISTYP,NTYP,IPLAC,CHAR1)
  910. IF (IPLAC.NE.0) THEN
  911. CALL REFUS
  912. IRETOU = 0
  913. ENDIF
  914. IF (IRETOU.EQ.0) THEN
  915. CALL LIRENT(IENT1,1,IRETOU)
  916. IF (IERR.NE.0) RETURN
  917. IF (IENT1.EQ.0) IENT1 = -1
  918. ENDIF
  919. ELSE IF (ITIT1.EQ.6) THEN
  920. CALL LIRCHA(CHAR1,0,IRETOU)
  921. CALL PLACE(LISTYP,NTYP,IPLAC,CHAR1)
  922. IF (IPLAC.NE.0) THEN
  923. CALL REFUS
  924. IRETOU = 0
  925. ENDIF
  926. IF (IRETOU.EQ.0) THEN
  927. CALL LIRENT(IENT1,1,IRETOU)
  928. IF (IERR.NE.0) RETURN
  929. IF (IENT1.EQ.0) IENT1 = -1
  930. ENDIF
  931. ELSE IF (ITIT1.EQ.7) THEN
  932. CALL LIRCHA(CHAR1,0,IRETOU)
  933. CALL PLACE(LISTYP,NTYP,IPLAC,CHAR1)
  934. IF (IPLAC.NE.0) THEN
  935. CALL REFUS
  936. IRETOU = 0
  937. ENDIF
  938. IF (IRETOU.EQ.0) THEN
  939. CALL LIRENT(IENT1,1,IRETOU)
  940. IF (IERR.NE.0) RETURN
  941. IF (IENT1.EQ.0) IENT1 = -1
  942. ENDIF
  943. ELSE IF (ITIT1.EQ.8) THEN
  944. CALL LIRCHA(CHAR1,0,IRETOU)
  945. CALL PLACE(LISTYP,NTYP,IPLAC,CHAR1)
  946. IF (IPLAC.NE.0) THEN
  947. CALL REFUS
  948. IRETOU = 0
  949. ENDIF
  950. IF (IRETOU.EQ.0) THEN
  951. CALL LIRENT(IENT1,1,IRETOU)
  952. IF (IERR.NE.0) RETURN
  953. IF (IENT1.EQ.0) IENT1 = -1
  954. ENDIF
  955. ENDIF
  956. IF (CHAR1.NE.' '.OR.IENT1.NE.0) CALL LIRENT(K,0,IRETOU)
  957.  
  958. C write(6,*) 'prchan:itit1,ient1,K,char1=',itit1,ient1,K,char1
  959.  
  960. CALL CHEVOL(IEV1,ITIT1,K,CHAR1,IENT1,IEV2)
  961. CALL ACTOBJ('EVOLUTIO',IEV2,1)
  962.  
  963. CALL LIRMOT(LISTYP,NTYP,IPLAC,0)
  964. IF (IPLAC.GT.23) THEN
  965. IEV1 = IEV2
  966. IFOIS = IFOIS+1
  967. GOTO 4000
  968. ENDIF
  969.  
  970. CALL ECROBJ('EVOLUTIO',IEV2)
  971. ENDIF
  972.  
  973. END
  974.  
  975.  
  976.  

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