Télécharger lektab.eso

Retour à la liste

Numérotation des lignes :

lektab
  1. C LEKTAB SOURCE CB215821 24/04/12 21:16:35 11897
  2. SUBROUTINE LEKTAB(MTB,NOMI,IPOINT)
  3. C---------------------------------------------------------------------
  4. C Ce sous-programme recherche dans la table MTABLE l'indice NOMI.
  5. C NOMI doit se trouver dans la liste LISTS. Le soustype de la table
  6. C est controlé par l'opérateur appelé.
  7. C
  8. C Si l'objet trouvé à l'indice NOMI est du bon type, son pointeur
  9. C IPOINT est renvoyé au sous-programme appelant.
  10. C Sinon, il est calculé et placé à l'indice NOMI de la table MTABLE
  11. C et son pointeur IPOINT est renvoyé au sous-programme appelant.
  12. C---------------------------------------------------------------------
  13. C
  14. C---------------------------
  15. C Paramètres Entrée/Sortie :
  16. C---------------------------
  17. C
  18. C E/ MTABLE : Pointeur de la table contenant l'information cherchée
  19. C E/ NOMI : Indice de la table où on cherche une donnée
  20. C /S IPOINT : Pointeur sur l'objet trouvé ou ajouté à l'indice NOMI
  21. C En cas de problème IPOINT est nul.
  22. C
  23. C---------------------------------------------------------------------
  24. IMPLICIT INTEGER(I-N)
  25. IMPLICIT REAL*8 (A-H,O-Z)
  26.  
  27. -INC SMCOORD
  28. -INC PPARAM
  29. -INC CCOPTIO
  30. -INC CCGEOME
  31. -INC SMELEME
  32. POINTEUR MELEMQ.MELEME
  33. -INC SMMODEL
  34. -INC SMTABLE
  35. POINTEUR IPTR.MTABLE,MTABM.MTABLE
  36. CHARACTER*8 MOTYP,TYPOBJ
  37. CHARACTER*72 ICHAI,CHARRE
  38. LOGICAL IRETL,IBOOL,LOGRE,VLOGI
  39. REAL*8 XRET,XVALRE
  40. *
  41. CHARACTER*(*) NOMI
  42. CHARACTER*8 NOMC,NOMDOM
  43. PARAMETER (NBO=60)
  44. CHARACTER*8 LISTS(NBO),TYPE,NOM,MIND,MINDS,TYPI,MNEFMD
  45. DATA LISTS/'MATESI ','XXVOLUM ','XXCOTE ','XXDIAME ','XXDIEMIN',
  46. & 'MATC ','XXPSOML ','INCO ','KIZG ','KOPT ',
  47. & 'PASDETPS','DOMAINE ','DOMZ ','EQEX ','EQPR ',
  48. & 'XXDIAGSI','KIZG1 ','KIZD ','SOMMET ','CENTRE ',
  49. & 'FACE ','FACEL ','FACEP ','XXNORMAF','XXSURFAC',
  50. & 'MAILLAGE','CETR&FAC','MATRIS ','ELTFA ','XXNORMAE',
  51. & 'KIZA ','ARGS ','SOMCEN ','CESOCE ','NORMALEV',
  52. & 'OENVELOP','XXMSOMME','MATEEF ','ELKONV ','XXDIAGFA',
  53. & 'M1BULLE ','CENTREP0','ELTP1NC ','CENTREP1','VOLUMAC ',
  54. & 'MACRO ','QUADRATI','MACRO1 ','XXDXDY ','MSOMMET ',
  55. & 'MMAIL ','MLGVNIMP','MLGVTIMP','ENVELOPP','FACEL2 ',
  56. & 'QUAF ','XXCTREP1','XXCTREP0','MAILFACE','ARETE '/
  57. C
  58. C- Initialisations
  59. C
  60. C write(6,*)'DEBUT LEKTAB MTB,NOMI=',MTB,NOMI
  61. MTABLE = ABS(MTB)
  62.  
  63. CALL ECRCHA('INEFMD ')
  64. CALL ECROBJ('TABLE',MTABLE)
  65. CALL EXIS
  66. CALL LIRLOG(VLOGI,1,IRET)
  67. IF(IRET.EQ.0)THEN
  68. write(6,*)'LEKTAB : Pb avec INEFMD'
  69. go to 5000
  70. ENDIF
  71. IF(VLOGI)THEN
  72. TYPE=' '
  73. CALL ACMO(MTABLE,'INEFMD ',TYPE,INEFMD)
  74. IF(TYPE.EQ.'MOT')THEN
  75. CALL ACMM(MTABLE,'INEFMD ',MNEFMD)
  76. IF(MNEFMD.EQ.'LINE')THEN
  77. INEFMD=1
  78. ELSEIF(MNEFMD.EQ.'MACRO')THEN
  79. INEFMD=2
  80. ELSEIF(MNEFMD.EQ.'QUAF ')THEN
  81. INEFMD=3
  82. ELSEIF(MNEFMD.EQ.'LINB ')THEN
  83. INEFMD=4
  84. ELSEIF(MNEFMD.EQ.'ISOQ ')THEN
  85. INEFMD=5
  86. ELSE
  87. INEFMD=0
  88. ENDIF
  89. ELSEIF(TYPE.EQ.'ENTIER')THEN
  90. CALL ACME(MTABLE,'INEFMD ',INEFMD)
  91. ELSE
  92. write(6,*)'LEKTAB : Pb avec INEFMD'
  93. GO TO 5000
  94. ENDIF
  95. ELSE
  96. INEFMD=0
  97. ENDIF
  98.  
  99. KECR=0
  100. IF(MTB.LT.0)KECR=1
  101. NOM = NOMI
  102. IPOINT = 0
  103. I211 = 0
  104. I221 = 0
  105. I231 = 0
  106. I241 = 0
  107. I251 = 0
  108. I271 = 0
  109. I291 = 0
  110. I301 = 0
  111. I331 = 0
  112. I341 = 0
  113. I371 = 0
  114. I391 = 0
  115. I501 = 0
  116. I511 = 0
  117. I1201 = 0
  118. I541 = 0
  119. I542 = 0
  120. I551 = 0
  121. I591 = 0
  122. C
  123. C- Détermination du cas à traiter et ventilation
  124. C
  125. CG SEGACT MTABLE
  126. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  127. IPREC=0
  128. ISTOK=0
  129. IF (TYPE.EQ.'DOMAINE ') THEN
  130. c
  131. c traitement special pour le cas ou PRECONDI n'existait pas
  132. c
  133. ICHAI(1:8)='PRECONDI'
  134. MOTYP='MOT'
  135. TYPOBJ=' '
  136. CALL ACCTAB(MTABLE,MOTYP,IVAL,XRET,ICHAI(1:8),IBOOL
  137. $ ,IOBJ,TYPOBJ,IVALRE,XVALRE,CHARRE,LOGRE,IOBRE)
  138. IRETL=.TRUE.
  139. IF(TYPOBJ.EQ.' ') IRETL = .FALSE.
  140. IF(.NOT.IRETL)CALL ECME(MTABLE,'PRECONDI',1)
  141. CALL ACME(MTABLE,'PRECONDI',IPREC)
  142. ENDIF
  143. ISTOK=IPREC
  144.  
  145.  
  146. CALL OPTLI(IP,LISTS,NOM,NBO)
  147. C write(6,*)' LEKTAB NOM=',nom
  148. IF (IP.EQ.0) THEN
  149. IF (NOM(1:4).EQ.'ARGS') THEN
  150. IP = 32
  151. ELSE
  152. C Indice %m1:8 : N'est pas un indice de table reconnu
  153. MOTERR(1:8) = NOM
  154. CALL ERREUR(791)
  155. RETURN
  156. ENDIF
  157. ENDIF
  158. C write(6,*)' LEKTAB IP=',IP, ' NOMI==========',NOMI
  159. GOTO ( 10, 20, 30, 40, 50, 60, 70, 80, 90,100
  160. & ,110,120,130,140,150,160,170,180,190,200
  161. & ,210,220,230,240,250,260,270,280,290,300
  162. & ,310,320,330,340,350,360,370,380,390,400
  163. & ,410,420,430,440,450,460,470,480,490,500
  164. & ,510,520,530,540,550,560,570,580,590,600),IP
  165. C
  166. C Si PRECONDI = 0 (IPREC=0) On recaclcule systématiquement les numéros
  167. C suivant : 10 20 30 40 50 60 70 160 240 250 300 350 360 370 380 400
  168. C 450 490
  169. C
  170. C-*DOMAINE.'MATESI'
  171. C
  172. 10 CONTINUE
  173. TYPE = ' '
  174. CALL ACMO(MTABLE,'MATESI',TYPE,MATRIK)
  175. IF (TYPE.NE.'MATRIK '.OR.IPREC.EQ.0) THEN
  176. CALL ECROBJ('TABLE',MTABLE)
  177. CALL HRSI
  178. TYPE='MATRIK'
  179. CALL LIROBJ(TYPE,MATRIK,1,IRET)
  180. IF (IRET.EQ.0) GOTO 5000
  181. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'MATESI','MATRIK',MATRIK)
  182. ENDIF
  183. IPOINT = MATRIK
  184. IF(KECR.EQ.1)CALL ECROBJ('MATRIK',MATRIK)
  185. RETURN
  186. C
  187. C-*DOMAINE.'XXVOLUM' : CHPO CENTRE contenant le volume des éléments
  188. C
  189. 20 CONTINUE
  190. TYPE = ' '
  191. CALL ACMO(MTABLE,'XXVOLUM ',TYPE,MCHPOI)
  192. IF (TYPE.NE.'CHPOINT '.OR.IPREC.EQ.0) THEN
  193. C write(6,*) 'On ne trouve pas XXVOLUM -> On le calcule'
  194. TYPE=' '
  195. CALL ACMO(MTABLE,'CENTRE',TYPE,MELEMC)
  196. CALL ACMO(MTABLE,'MAILLAGE',TYPE,MELEME)
  197. CALL KVOL(MELEME,MELEMC,'CENTRE',MCHPOI)
  198. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXVOLUM ','CHPOINT ',MCHPOI)
  199. ENDIF
  200. IPOINT = MCHPOI
  201. IF(KECR.EQ.1)THEN
  202. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  203. CALL ECROBJ('CHPOINT ',IPOINT)
  204. ENDIF
  205. C write(6,*) 'Retour XXVOLUM : MTABLE=',MTABLE
  206. RETURN
  207. C
  208. C-*DOMAINE.'XXCOTE'
  209. C
  210. 30 CONTINUE
  211. TYPE=' '
  212. CALL ACMO(MTABLE,'XXCOTE',TYPE,MCHPOI)
  213. IF (TYPE.NE.'CHPOINT '.OR.IPREC.EQ.0) THEN
  214. C write(6,*) 'On ne trouve pas XXCOTE -> On le calcule'
  215. CALL ECROBJ('TABLE ',MTABLE)
  216. CALL KCOT
  217. TYPE = 'CHPOINT '
  218. CALL LIROBJ(TYPE,MCHPOI,1,IRET)
  219. IF (IRET.EQ.0) GOTO 5000
  220. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXCOTE','CHPOINT ',MCHPOI)
  221. ENDIF
  222. IPOINT = MCHPOI
  223. IF(KECR.EQ.1)THEN
  224. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  225. CALL ECROBJ('CHPOINT ',IPOINT)
  226. ENDIF
  227. C write(6,*) 'Retour XXCOTE : MTABLE=',MTABLE
  228. RETURN
  229. C
  230. C-*DOMAINE.'XXDIAME'
  231. C
  232. 40 CONTINUE
  233. TYPE = ' '
  234. CALL ACMO(MTABLE,'XXDIAME ',TYPE,MCHPOI)
  235. IF (TYPE.NE.'CHPOINT '.OR.IPREC.EQ.0) THEN
  236. C write(6,*) 'On ne trouve pas XXDIAME -> On le calcule'
  237. CALL ECROBJ('TABLE ',MTABLE)
  238. CALL KDME
  239. TYPE = 'CHPOINT '
  240. CALL LIROBJ(TYPE,MCHPOI,1,IRET)
  241. IF (IRET.EQ.0) GOTO 5000
  242. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXDIAME','CHPOINT ',MCHPOI)
  243. ENDIF
  244. IPOINT = MCHPOI
  245. IF(KECR.EQ.1)THEN
  246. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  247. CALL ECROBJ('CHPOINT ',IPOINT)
  248. ENDIF
  249. C write(6,*) 'Retour XXDIAME : MTABLE=',MTABLE
  250. RETURN
  251. C
  252. C-*DOMAINE.'XXDIEMIN'
  253. C
  254. 50 CONTINUE
  255. TYPE = ' '
  256. CALL ACMO(MTABLE,'XXDIEMIN',TYPE,MCHPOI)
  257. IF (TYPE.NE.'CHPOINT '.OR.IPREC.EQ.0) THEN
  258. C write(6,*) 'On ne trouve pas XXDIEMIN -> On le calcule'
  259. CALL ECROBJ('TABLE ',MTABLE)
  260. CALL KDMI
  261. TYPE = 'CHPOINT '
  262. CALL LIROBJ(TYPE,MCHPOI,1,IRET)
  263. IF (IRET.EQ.0) GOTO 5000
  264. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXDIEMIN','CHPOINT ',MCHPOI)
  265. ENDIF
  266. IPOINT = MCHPOI
  267. IF(KECR.EQ.1)THEN
  268. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  269. CALL ECROBJ('CHPOINT ',IPOINT)
  270. ENDIF
  271. C write(6,*) 'Retour XXDIEMIN : MTABLE=',MTABLE
  272. RETURN
  273. C
  274. C-*????.'MATC'
  275. C
  276. 60 CONTINUE
  277. TYPE = ' '
  278. CALL ACMO(MTABLE,'MATC',TYPE,MATRAK)
  279. IF (TYPE.NE.'MATRAK '.OR.IPREC.EQ.0) THEN
  280. c? IF (TYPE.NE.'MATRAK ') THEN
  281. CALL KMEC(MTABLE,MATRAK)
  282. IF (MATRAK.EQ.0) GOTO 5000
  283. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'MATC','MATRAK',MATRAK)
  284. ENDIF
  285. IPOINT = MATRAK
  286. IF(KECR.EQ.1)CALL ECROBJ('MATRAK',MATRAK)
  287. RETURN
  288. C
  289. C-*DOMAINE.'XXPSOML' : MCHAML, intégrale des fonctions tests par élément
  290. C
  291. 70 CONTINUE
  292. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  293. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  294. TYPE = ' '
  295. CALL ACMO(MTABLE,'XXPSOML',TYPE,ICHE)
  296. IF (TYPE.NE.'MCHAML '.OR.IPREC.EQ.0) THEN
  297. CALL ECROBJ('TABLE',MTABLE)
  298. CALL KPSOML
  299. TYPE = 'MCHAML'
  300. CALL LIROBJ(TYPE,ICHE,1,IRET)
  301. IF (IRET.EQ.0) GOTO 5000
  302. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXPSOML','MCHAML',ICHE)
  303. ENDIF
  304. IPOINT = ICHE
  305. IF(KECR.EQ.1)THEN
  306. CALL ACTOBJ('MCHAML ',IPOINT,1)
  307. CALL ECROBJ('MCHAML ',IPOINT)
  308. ENDIF
  309. RETURN
  310. C
  311. C- ????-INCO : TABLE de sous-type INCO
  312. C
  313. 80 CONTINUE
  314. MIND = LISTS(8)
  315. MINDS = LISTS(8)
  316. GOTO 1000
  317. C
  318. C- ????-KIZG : TABLE de sous-type KIZG
  319. C
  320. 90 CONTINUE
  321. MIND = LISTS(9)
  322. MINDS = LISTS(9)
  323. GOTO 1000
  324. C
  325. C- ????-KOPT : TABLE de sous-type KOPT
  326. C
  327. 100 CONTINUE
  328. MIND = LISTS(10)
  329. MINDS = LISTS(10)
  330. GOTO 1000
  331. C
  332. C- ????-PASDETPS : TABLE de sous-type PASDETPS
  333. C
  334. 110 CONTINUE
  335. MIND = LISTS(11)
  336. MINDS = LISTS(11)
  337. GOTO 1000
  338. C
  339. C- ????-DOMAINE : TABLE de sous-type DOMAINE
  340. C
  341. 120 CONTINUE
  342. MIND = LISTS(12)
  343. MINDS = LISTS(12)
  344. GOTO 1000
  345. C
  346. C- ????-DOMZ : TABLE de sous-type DOMAINE
  347. C
  348. 130 CONTINUE
  349. MIND = LISTS(13)
  350. MINDS = LISTS(12)
  351. GOTO 1000
  352. C
  353. C- ????-EQEX : TABLE de sous-type EQEX
  354. C
  355. 140 CONTINUE
  356. MIND = LISTS(14)
  357. MINDS = LISTS(14)
  358. GOTO 1000
  359. C
  360. C- ????-EQPR : TABLE de sous-type EQPR
  361. C
  362. 150 CONTINUE
  363. MIND = LISTS(15)
  364. MINDS = LISTS(15)
  365. GOTO 1000
  366. C
  367. C-*DOMAINE.'XXDIAGSI'
  368. C
  369. 160 CONTINUE
  370. TYPE = ' '
  371. CALL ACMO(MTABLE,'XXDIAGSI',TYPE,MCHPOI)
  372. IF (TYPE.NE.'CHPOINT '.OR.IPREC.EQ.0) THEN
  373. C write(6,*) 'On ne trouve pas XXDIAGSI -> On le calcule'
  374. CALL ECROBJ('TABLE ',MTABLE)
  375.  
  376. SEGACT,MCOORD
  377. CALL CADGSI
  378. TYPE = 'CHPOINT '
  379. CALL LIROBJ(TYPE,MCHPOI,1,IRET)
  380. IF (IRET.EQ.0) GOTO 5000
  381. IF(ISTOK.EQ.1) CALL ECMO(MTABLE,'XXDIAGSI','CHPOINT ',MCHPOI)
  382. ENDIF
  383. IPOINT = MCHPOI
  384. IF(KECR.EQ.1)THEN
  385. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  386. CALL ECROBJ('CHPOINT ',IPOINT)
  387. ENDIF
  388. C write(6,*) 'Retour XXDIAGSI : MTABLE=',MTABLE
  389. RETURN
  390. C
  391. C- ????-KIZG1 : TABLE de sous-type KIZG1
  392. C
  393. 170 CONTINUE
  394. MIND = LISTS(17)
  395. MINDS = LISTS(17)
  396. GOTO 1000
  397. C
  398. C- ????-KIZD : TABLE de sous-type KIZD
  399. C
  400. 180 CONTINUE
  401. MIND = LISTS(18)
  402. MINDS = LISTS(18)
  403. GOTO 1000
  404. C
  405. C- DOMAINE.'SOMMET' : MELEME de POI1 contenant les sommets du maillage
  406. C
  407. 190 CONTINUE
  408. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  409. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  410. TYPE = ' '
  411. CALL ACMO(MTABLE,'SOMMET',TYPE,MELEM1)
  412. IF (TYPE.NE.'MAILLAGE') THEN
  413. TYPE = ' '
  414. CALL ACMO(MTABLE,'MAILLAGE',TYPE,MELEME)
  415. IF (TYPE.NE.'MAILLAGE') GOTO 5000
  416. CALL ECRCHA('POI1')
  417. CALL ECROBJ('MAILLAGE',MELEME)
  418. CALL PRCHAN
  419. CALL LIROBJ('MAILLAGE',MELEM1,1,IRET)
  420. IF (IRET.EQ.0) GOTO 5000
  421. CALL ECMO(MTABLE,'SOMMET','MAILLAGE',MELEM1)
  422. ENDIF
  423. IPOINT = MELEM1
  424. IF(KECR.EQ.1)THEN
  425. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  426. CALL ECROBJ('MAILLAGE',IPOINT)
  427. ENDIF
  428. RETURN
  429. C
  430. C- DOMAINE.'CENTRE' : MELEME de POI1 contenant les centres du maillage
  431. C
  432. 200 CONTINUE
  433. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  434. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  435. TYPE = ' '
  436. CALL ACMO(MTABLE,'CENTRE',TYPE,MELEMC)
  437. IF (TYPE.NE.'MAILLAGE') THEN
  438. TYPE = ' '
  439. CALL ACMO(MTABLE,'MAILLAGE',TYPE,MELEME)
  440. IF (TYPE.NE.'MAILLAGE') GOTO 5000
  441. CALL ECROBJ('MAILLAGE',MELEME)
  442. CALL CRECTR
  443. CALL LIROBJ('MAILLAGE',MELEMC,1,IRET)
  444. IF (IRET.EQ.0) GOTO 5000
  445. CALL ECMO(MTABLE,'CENTRE','MAILLAGE',MELEMC)
  446. ENDIF
  447. IPOINT = MELEMC
  448. IF(KECR.EQ.1)THEN
  449. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  450. CALL ECROBJ('MAILLAGE',IPOINT)
  451. ENDIF
  452. RETURN
  453. C
  454. C- DOMAINE.'FACE' : MELEME de POI1 contenant les faces du maillage
  455. C
  456. 210 CONTINUE
  457. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  458. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  459. TYPE = ' '
  460. CALL ACMO(MTABLE,'FACE',TYPE,MELEF1)
  461. IF (TYPE.NE.'MAILLAGE') THEN
  462. I211 = 1
  463. GOTO 1100
  464. ENDIF
  465. 211 CONTINUE
  466. IPOINT = MELEF1
  467. IF(KECR.EQ.1)THEN
  468. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  469. CALL ECROBJ('MAILLAGE',IPOINT)
  470. ENDIF
  471. RETURN
  472. C
  473. C- DOMAINE.'FACEL' : MELEME des connectivités centre-face-centre
  474. C
  475. 220 CONTINUE
  476. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  477. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  478. TYPE = ' '
  479. CALL ACMO(MTABLE,'FACEL',TYPE,MELEMF)
  480. IF (TYPE.NE.'MAILLAGE') THEN
  481. I221 = 1
  482. GOTO 1100
  483. ENDIF
  484. 221 CONTINUE
  485. IPOINT = MELEMF
  486. IF(KECR.EQ.1)THEN
  487. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  488. CALL ECROBJ('MAILLAGE',IPOINT)
  489. ENDIF
  490. RETURN
  491. C
  492. C- DOMAINE.'FACEP' : MELEME des connectivités sommet-face-sommet
  493. C
  494. 230 CONTINUE
  495. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  496. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  497. TYPE = ' '
  498. CALL ACMO(MTABLE,'FACEP',TYPE,MELEMP)
  499. IF (TYPE.NE.'MAILLAGE') THEN
  500. I231 = 1
  501. GOTO 1100
  502. ENDIF
  503. 231 CONTINUE
  504. IPOINT = MELEMP
  505. IF(KECR.EQ.1)THEN
  506. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  507. CALL ECROBJ('MAILLAGE',IPOINT)
  508. ENDIF
  509. RETURN
  510. C
  511. C-*DOMAINE.'XXNORMAE' : CHPO FACE contenant la normale choisie à la face
  512. C
  513. 240 CONTINUE
  514. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  515. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  516. TYPE = ' '
  517. CALL ACMO(MTABLE,'XXNORMAF',TYPE,ICHPV)
  518.  
  519. IF (TYPE.NE.'CHPOINT '.OR.IPREC.EQ.0)THEN
  520. I241 = 1
  521. GOTO 1200
  522. ENDIF
  523. 241 CONTINUE
  524. IPOINT = ICHPV
  525. IF(KECR.EQ.1)THEN
  526. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  527. CALL ECROBJ('CHPOINT ',IPOINT)
  528. ENDIF
  529. RETURN
  530. C
  531. C-*DOMAINE.'XXSURFAC' : CHPO FACE contenant l'aire de la face
  532. C
  533. 250 CONTINUE
  534. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  535. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  536. TYPE = ' '
  537. CALL ACMO(MTABLE,'XXSURFAC',TYPE,ICHP)
  538. IF (TYPE.NE.'CHPOINT '.OR.IPREC.EQ.0) THEN
  539. I251 = 1
  540. GOTO 1200
  541. ENDIF
  542. 251 CONTINUE
  543. IPOINT = ICHP
  544. IF(KECR.EQ.1)THEN
  545. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  546. CALL ECROBJ('CHPOINT ',IPOINT)
  547. ENDIF
  548. RETURN
  549. C
  550. C- DOMAINE.'MAILLAGE' : Maillage géométrique du domaine considéré
  551. C
  552. 260 CONTINUE
  553. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  554. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  555. TYPE=' '
  556. CALL ACMO(MTABLE,'MAILLAGE',TYPE,MELEME)
  557. IF (TYPE.NE.'MAILLAGE') THEN
  558. C Indice %m1:8 : Objet de type %m9:16 incorrect
  559.  
  560. MOTERR(1:8) = NOM
  561. MOTERR(9:16) = TYPE
  562. CALL ERREUR(787)
  563. RETURN
  564. ENDIF
  565. IPOINT = MELEME
  566. IF(KECR.EQ.1)THEN
  567. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  568. CALL ECROBJ('MAILLAGE',IPOINT)
  569. ENDIF
  570. RETURN
  571. C
  572. C- DOMAINE.'CETR&FAC' : Inutilisé (à verifier) -> renvoie 'CENTRE'
  573. C
  574. 270 CONTINUE
  575. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  576. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  577. TYPE = ' '
  578. CALL ACMO(MTABLE,'CENTRE',TYPE,MELEMK)
  579. IF (TYPE.NE.'MAILLAGE') THEN
  580. I271 = 1
  581. GOTO 1100
  582. ENDIF
  583. 271 CONTINUE
  584. IPOINT = MELEMK
  585. IF(KECR.EQ.1)THEN
  586. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  587. CALL ECROBJ('CHPOINT ',IPOINT)
  588. ENDIF
  589. RETURN
  590. C
  591. C- ????.'MATRIS'
  592. C
  593. 280 CONTINUE
  594. TYPE = ' '
  595. CALL ACMO(MTABLE,'MATRIS',TYPE,MTABM)
  596. IF (TYPE.NE.'TABLE ') THEN
  597. IMPR=1
  598. CALL ECRENT(IMPR)
  599. CALL ECRCHA('IMPR')
  600. CALL ECROBJ('TABLE',MTABLE)
  601. CALL PROGCS
  602. CALL LIROBJ('TABLE',MTABM,1,IRET)
  603. IF (IRET.EQ.0) GOTO 5000
  604. CALL ECMO(MTABLE,'MATRIS','TABLE',MTABM)
  605. ENDIF
  606. IPOINT = MTABM
  607. IF(KECR.EQ.1)CALL ECROBJ('TABLE',MTABM)
  608. RETURN
  609. C
  610. C- DOMAINE.'ELTFA' : MELEME connectivite face par élément (Hdiv)
  611. C
  612. 290 CONTINUE
  613. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  614. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  615. TYPE = ' '
  616. CALL ACMO(MTABLE,'ELTFA',TYPE,MELAF)
  617. IF (TYPE.NE.'MAILLAGE') THEN
  618. I291 = 1
  619. GOTO 1100
  620. ENDIF
  621. 291 CONTINUE
  622. IPOINT = MELAF
  623. IF(KECR.EQ.1)THEN
  624. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  625. CALL ECROBJ('CHPOINT ',IPOINT)
  626. ENDIF
  627. RETURN
  628. C
  629. C-*DOMAINE.'XXNORMAE' : MCHAML d'orientation des normales
  630. C
  631. 300 CONTINUE
  632. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  633. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  634. TYPE = ' '
  635. CALL ACMO(MTABLE,'XXNORMAE',TYPE,ICHE)
  636. IF (TYPE.NE.'MCHAML '.OR.IPREC.EQ.0) THEN
  637. I301 = 1
  638. GOTO 1200
  639. ENDIF
  640. 301 CONTINUE
  641. IPOINT = ICHE
  642. IF(KECR.EQ.1)THEN
  643. CALL ACTOBJ('MCHAML ',IPOINT,1)
  644. CALL ECROBJ('MCHAML ',IPOINT)
  645. ENDIF
  646. RETURN
  647. C
  648. C- ????.'KIZA' : TABLE de sous-type KIZA
  649. C
  650. 310 CONTINUE
  651. MIND=LISTS(31)
  652. MINDS=LISTS(31)
  653. GOTO 1000
  654. C
  655. C- ????.'ARGS...' : CHPO
  656. C
  657. 320 CONTINUE
  658. TYPE = ' '
  659. CALL ACMO(MTABLE,NOM,TYPE,MCHP)
  660. IF (TYPE.NE.'CHPOINT ') THEN
  661. NC = 10
  662. CALL COCHPT(NC,MCHP)
  663. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,NOM,'CHPOINT',MCHP)
  664. ENDIF
  665. IPOINT = MCHP
  666. IF(KECR.EQ.1)THEN
  667. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  668. CALL ECROBJ('CHPOINT ',IPOINT)
  669. ENDIF
  670. RETURN
  671. C
  672. C- DOMAINE.'SOMCEN'
  673. C Cet indice contient un maillage de connectivités sommet-centre
  674. C Il est constitué d'éléments de type POLY :
  675. C - le premier noeud est le sommet considéré ;
  676. C - les noeuds suivants sont les centres des éléments
  677. C contenant le sommet considéré.
  678. C
  679. 330 CONTINUE
  680. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  681. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  682. TYPE = ' '
  683. * CALL ACMO(MTABLE,'MMAIL',TYPE,MMELEM)
  684. CALL ACMO(MTABLE,'MAILLAGE',TYPE,MMELEM)
  685. IF (TYPE.NE.'MAILLAGE') THEN
  686. C Indice %m1:8 : Objet de type %m9:16 incorrect
  687.  
  688. MOTERR(1:8) = NOM
  689. MOTERR(9:16) = TYPE
  690. CALL ERREUR(787)
  691. RETURN
  692. ENDIF
  693. * IF (TYPE.NE.'MAILLAGE') THEN
  694. * I331 = 1
  695. * GOTO 1300
  696. * ENDIF
  697. 331 CONTINUE
  698. TYPE = ' '
  699. CALL ACMO(MTABLE,'SOMCEN',TYPE,MSOCEN)
  700. IF (TYPE.NE.'MAILLAGE') THEN
  701. TYPE = 'MAILLAGE'
  702. CALL ACMO(MTABLE,'CENTRE',TYPE,MELCEN)
  703. * CALL ACMO(MTABLE,'MSOMMET',TYPE,MMLEMS)
  704. CALL ACMO(MTABLE,'SOMMET',TYPE,MMLEMS)
  705. CALL POIELE(MMELEM,MMLEMS,MELCEN,MSOCEN)
  706. CALL ECMO(MTABLE,'SOMCEN','MAILLAGE',MSOCEN)
  707. ENDIF
  708. IPOINT = MSOCEN
  709. IF(KECR.EQ.1)THEN
  710. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  711. CALL ECROBJ('MAILLAGE',IPOINT)
  712. ENDIF
  713. RETURN
  714. C
  715. C- DOMAINE.'CESOCE'
  716. C cet indice contient un maillage de connectivités
  717. C centre-(sommet)-centre.
  718. C Il est constitué d'éléments de type POLY :
  719. C - le premier noeud est le centre de l'élément considéré ;
  720. C - les noeuds suivants sont les centres des éléments
  721. C ayant au moins un sommet commun avec l'élément considéré.
  722. C
  723. 340 CONTINUE
  724. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  725. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  726. TYPE=' '
  727. * CALL ACMO(MTABLE,'MMAIL',TYPE,MMELEM)
  728. CALL ACMO(MTABLE,'MAILLAGE',TYPE,MMELEM)
  729. IF (TYPE.NE.'MAILLAGE') THEN
  730. C Indice %m1:8 : Objet de type %m9:16 incorrect
  731.  
  732. MOTERR(1:8) = NOM
  733. MOTERR(9:16) = TYPE
  734. CALL ERREUR(787)
  735. RETURN
  736. ENDIF
  737. * IF (TYPE.NE.'MAILLAGE') THEN
  738. * I341 = 1
  739. * GOTO 1300
  740. * ENDIF
  741. 341 CONTINUE
  742. TYPE = ' '
  743. CALL ACMO(MTABLE,'CESOCE',TYPE,MSOCEN)
  744. IF (TYPE.NE.'MAILLAGE') THEN
  745. TYPE = 'MAILLAGE'
  746. CALL ACMO(MTABLE,'CENTRE',TYPE,MELCEN)
  747. * CALL ACMO(MTABLE,'MSOMMET',TYPE,MMLEMS)
  748. CALL ACMO(MTABLE,'SOMMET',TYPE,MMLEMS)
  749. CALL ELPOEL(MMELEM,MMLEMS,MELCEN,MCESOC)
  750. CALL ECMO(MTABLE,'CESOCE','MAILLAGE',MCESOC)
  751. ENDIF
  752. IPOINT = MCESOC
  753. IF(KECR.EQ.1)THEN
  754. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  755. CALL ECROBJ('MAILLAGE',IPOINT)
  756. ENDIF
  757. RETURN
  758. C
  759. C-*NORMALEV
  760. C
  761. 350 CONTINUE
  762. TYPE = ' '
  763. CALL ACMO(MTABLE,'NORMALEV',TYPE,MNORM)
  764. 351 CONTINUE
  765. IF (TYPE.NE.'MAILLAGE'.OR.IPREC.EQ.0) THEN
  766. TYPE = 'MAILLAGE'
  767. CALL ACMO(MTABLE,'QUAF',TYPE,MELEMQ)
  768. C petite verification
  769. SEGACT MELEMQ
  770. ICONF=1
  771. DO 62486 L=1,MAX(1,MELEMQ.LISOUS(/1))
  772. IPT1=MELEMQ
  773. IF(MELEMQ.LISOUS(/1).NE.0)IPT1=MELEMQ.LISOUS(L)
  774. SEGACT IPT1
  775. IF(IDIM.EQ.2.AND.NOMS(IPT1.ITYPEL).NE.'SEG3')THEN
  776. ICONF=0
  777. ENDIF
  778. IF(IDIM.EQ.3.AND.NOMS(IPT1.ITYPEL).NE.'TRI7'
  779. & .AND.NOMS(IPT1.ITYPEL).NE.'QUA9')THEN
  780. ICONF=0
  781. ENDIF
  782. 62486 CONTINUE
  783.  
  784. IF(ICONF.EQ.0)THEN
  785. TYPE=' '
  786. CALL ACMO(MTABLE,'ENVELOPP',TYPE,MENVEL)
  787. IF(TYPE.NE.'MAILLAGE')THEN
  788. CALL MENVLP(MELEMQ,MENVEL,MCHPOI,IRET)
  789. IF (IRET.EQ.0) GOTO 5000
  790. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'ENVELOPP','MAILLAGE',MENVEL)
  791. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'OENVELOP','CHPOINT',MCHPOI)
  792. IF(KECR.EQ.1.AND.NOMI.EQ.'ENVELOPP')THEN
  793. CALL ACTOBJ('MAILLAGE',MENVEL,1)
  794. CALL ECROBJ('MAILLAGE',MENVEL)
  795. ENDIF
  796. IF(KECR.EQ.1.AND.NOMI.EQ.'OENVELOP')THEN
  797. CALL ACTOBJ('CHPOINT',MCHPOI,1)
  798. CALL ECROBJ('CHPOINT',MCHPOI)
  799. ENDIF
  800. ENDIF
  801.  
  802. CALL ACME(MTABLE,'INEFMD',INEFMD)
  803. CALL ACMF(MTABLE,'TOLER',TOLER)
  804. CALL ACMM(MTABLE,'NOMDOM',NOMDOM)
  805. MACRO=0
  806. MTABI=0
  807. CALL KKDOM(MENVEL,MACRO,TOLER,NOMDOM,MTABI,MTABD,INEFMD)
  808. CALL ACMO(MTABD,'MAILLAGE',TYPE,MELEME)
  809. CALL ACMO(MTABD,'SOMMET',TYPE,MELEMS)
  810. ELSE
  811. CALL ACMO(MTABLE,'MAILLAGE',TYPE,MELEME)
  812. CALL ACMO(MTABLE,'SOMMET',TYPE,MELEMS)
  813. ENDIF
  814.  
  815. CALL NORMNO(MELEME,MELEMS,MNORM,IRET)
  816. IF (IRET.EQ.0) THEN
  817. C Indice %m1:8 : Objet de type %m9:16 incorrect
  818.  
  819. MOTERR(1:8) = 'NORMALEV'
  820. MOTERR(9:16) = TYPE
  821. CALL ERREUR(787)
  822. RETURN
  823. ENDIF
  824. ENDIF
  825. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'NORMALEV','CHPOINT',MNORM)
  826. IPOINT=MNORM
  827. IF(NOM.EQ.'OENVELOP')IPOINT=MCHPOI
  828. IF(KECR.EQ.1.AND.NOMI.EQ.'NORMALEV')THEN
  829. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  830. CALL ECROBJ('CHPOINT ',IPOINT)
  831. ENDIF
  832.  
  833. IF(KECR.EQ.1.AND.NOMI.EQ.'OENVELOP')THEN
  834. CALL ACTOBJ('CHPOINT',IPOINT,1)
  835. CALL ECROBJ('CHPOINT',IPOINT)
  836. ENDIF
  837.  
  838. RETURN
  839. C
  840. C-*OENVELOP
  841. C
  842. 360 CONTINUE
  843. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  844. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  845. TYPE=' '
  846. CALL ACMO(MTABLE,'OENVELOP',TYPE,MCHPOI)
  847. IF (TYPE.NE.'CHPOINT'.OR.IPREC.EQ.0)THEN
  848. TYPE=' '
  849. GO TO 351
  850. ENDIF
  851. IPOINT = MCHPOI
  852. IF(KECR.EQ.1)THEN
  853. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  854. CALL ECROBJ('CHPOINT ',IPOINT)
  855. ENDIF
  856. RETURN
  857. C
  858. C-*DOMAINE.'XXMSOMME'
  859. C
  860. 370 CONTINUE
  861. TYPE = ' '
  862. CALL ACMO(MTABLE,'XXMSOMME',TYPE,MCHPOI)
  863. IF (TYPE.NE.'CHPOINT '.OR.IPREC.EQ.0) THEN
  864. C write(6,*) 'On ne trouve pas XXDIAGSI -> On le calcule'
  865. CALL ACMO(MTABLE,'MMAIL ',TYPE,MELEME)
  866. IF (TYPE.NE.'MAILLAGE') THEN
  867. I371 = 1
  868. GOTO 1300
  869. ENDIF
  870. CALL ECRCHA('MSOMMET')
  871. CALL ECROBJ('TABLE ',MTABLE)
  872. CALL CADGSI
  873. TYPE = 'CHPOINT '
  874. CALL LIROBJ(TYPE,MCHPOI,1,IRET)
  875. IF (IRET.EQ.0) GOTO 5000
  876. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXMSOMME','CHPOINT ',MCHPOI)
  877. ENDIF
  878. IPOINT = MCHPOI
  879. IF(KECR.EQ.1)THEN
  880. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  881. CALL ECROBJ('CHPOINT ',IPOINT)
  882. ENDIF
  883. C write(6,*) 'Retour XXDIAGSI : MTABLE=',MTABLE
  884. RETURN
  885. C /\
  886. C-*DOMAINE.'MATEEF' : En chantier /! \ /
  887. C / <-/
  888. 380 CONTINUE
  889. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  890. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  891. TYPE=' '
  892. CALL ACMO(MTABLE,'MATEEF',TYPE,MATRIK)
  893. IF (TYPE.NE.'MATRIK '.OR.IPREC.EQ.0) THEN
  894. CALL ECROBJ('TABLE',MTABLE)
  895. C CALL HREF
  896. MOTERR(1:27) = ' LEKTAB : HREF hors service'
  897. CALL ERREUR(-301)
  898. TYPE='MATRIK'
  899. CALL LIROBJ(TYPE,MATRIK,1,IRET)
  900. IF (IRET.EQ.0) GOTO 5000
  901. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'MATEEF','MATRIK',MATRIK)
  902. ENDIF
  903. IPOINT = MATRIK
  904. IF(KECR.EQ.1)CALL ECROBJ('MATRIK',MATRIK)
  905. RETURN
  906. C
  907. C- DOMAINE.'ELKONV'
  908. C
  909. 390 CONTINUE
  910. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  911. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  912. TYPE = ' '
  913. CALL ACMO(MTABLE,'FACEL',TYPE,MELEMF)
  914. IF (TYPE.NE.'MAILLAGE') THEN
  915. C write(6,*)' LEKTAB FACEL n existe pas on le cree '
  916. I391 = 1
  917. GOTO 1100
  918. ENDIF
  919. C write(6,*)' LEKTAB FACEL existe '
  920. 391 CONTINUE
  921. TYPE = ' '
  922. CALL ACMO(MTABLE,'ELKONV',TYPE,MKONV)
  923. IF (TYPE.NE.'MAILLAGE') THEN
  924. TYPI = 'MAILLAGE'
  925. CALL ACMO(MTABLE,'FACE',TYPI,MELEF1)
  926. CALL ACMO(MTABLE,'FACEL',TYPI,MELEMF)
  927. CALL ACMO(MTABLE,'CENTRE',TYPI,MELEMK)
  928. CALL ACMO(MTABLE,'ELTFA',TYPI,MELAF)
  929. C write(6,*)' melef1,melemf,melemk,melaf='
  930. C & ,melef1,melemf,melemk,melaf
  931. CALL ELKONV(MELAF,MELEMF,MELEF1,MELEMK,MKONV)
  932. CALL ECMO(MTABLE,'ELKONV','MAILLAGE',MKONV)
  933. ENDIF
  934. IPOINT = MKONV
  935. IF(KECR.EQ.1)THEN
  936. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  937. CALL ECROBJ('MAILLAGE',IPOINT)
  938. ENDIF
  939. RETURN
  940. C
  941. C-*DOMAINE.'XXDIAGFA'
  942. C
  943. 400 CONTINUE
  944. TYPE=' '
  945. CALL ACMO(MTABLE,'XXDIAGFA',TYPE,MCHPOI)
  946. IF(TYPE.NE.'CHPOINT '.OR.IPREC.EQ.0)THEN
  947. C write(6,*)' On a pas trouve XXDIAGFA On le calcule '
  948. CALL ECROBJ('TABLE ',MTABLE)
  949. CALL CADGFA
  950. TYPE='CHPOINT '
  951. CALL LIROBJ(TYPE,MCHPOI,1,IRET)
  952. IF (IRET.EQ.0) GOTO 5000
  953. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXDIAGFA','CHPOINT ',MCHPOI)
  954. ENDIF
  955. IPOINT = MCHPOI
  956. IF(KECR.EQ.1)THEN
  957. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  958. CALL ECROBJ('CHPOINT ',IPOINT)
  959. ENDIF
  960. C write(6,*)' retour XXDIAGFA : MTABLE=',MTABLE
  961. RETURN
  962. C
  963. C- ????.'M1BULLE' : En chantier
  964. C
  965. 410 CONTINUE
  966. TYPE = ' '
  967. CALL ACMO(MTABLE,'M1BULLE',TYPE,IPOINT)
  968. IF(TYPE.NE.'MAILLAGE')THEN
  969. C write(6,*)' On a pas trouve M1BULLE On le calcule '
  970. CALL ACMO(MTABLE,'MAILLAGE',TYPI,MELEME)
  971. CALL ACMO(MTABLE,'CENTRE',TYPI,MELEMC)
  972. CALL GENMCT(MELEME,MELEMC,IPOINT)
  973. CALL ECMO(MTABLE,'M1BULLE','MAILLAGE',IPOINT)
  974. IF(KECR.EQ.1)THEN
  975. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  976. CALL ECROBJ('MAILLAGE',IPOINT)
  977. ENDIF
  978. ENDIF
  979. RETURN
  980. C
  981. C- DOMAINE.'CENTREP0'
  982. C
  983. 420 CONTINUE
  984. TYPE = ' '
  985. CALL ACMO(MTABLE,'CENTREP0',TYPE,IPOINT)
  986. IF (TYPE.NE.'MAILLAGE') THEN
  987. CALL KCTRP0(MTABLE,IPOINT)
  988. ENDIF
  989. IF(KECR.EQ.1)THEN
  990. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  991. CALL ECROBJ('MAILLAGE',IPOINT)
  992. ENDIF
  993. RETURN
  994. C
  995. C- DOMAINE.'ELTP1NC '
  996. C
  997. 430 CONTINUE
  998. IF(INEFMD.EQ.0.OR.INEFMD.EQ.1.OR.INEFMD.EQ.4)GO TO 5000
  999. TYPE=' '
  1000. CALL ACMO(MTABLE,'ELTP1NC ',TYPE,IPOINT)
  1001. IF (TYPE.NE.'MAILLAGE') THEN
  1002. CALL KCTRP1(MTABLE,IPOINT,2)
  1003. ENDIF
  1004. IF(KECR.EQ.1)THEN
  1005. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1006. CALL ECROBJ('MAILLAGE',IPOINT)
  1007. ENDIF
  1008. RETURN
  1009. C
  1010. C- DOMAINE.'CENTREP1'
  1011. C
  1012. 440 CONTINUE
  1013. IF(INEFMD.EQ.0.OR.INEFMD.EQ.1.OR.INEFMD.EQ.4)GO TO 5000
  1014. TYPE=' '
  1015. CALL ACMO(MTABLE,'CENTREP1',TYPE,IPOINT)
  1016. IF (TYPE.NE.'MAILLAGE') THEN
  1017. CALL KCTRP1(MTABLE,IPOINT,1)
  1018. ENDIF
  1019. IF(KECR.EQ.1)THEN
  1020. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1021. CALL ECROBJ('MAILLAGE',IPOINT)
  1022. ENDIF
  1023. RETURN
  1024. C
  1025. C-*DOMAINE.'VOLUMAC '
  1026. C
  1027. 450 CONTINUE
  1028. TYPE=' '
  1029. CALL ACMO(MTABLE,'VOLUMAC ',TYPE,IPOINT)
  1030. IF(IPOINT.NE.0)RETURN
  1031.  
  1032. TYPE=' '
  1033. CALL ACMO(MTABLE,'MACRO',TYPE,MELEME)
  1034. IF(MELEME.EQ.0)THEN
  1035. C Indice %m1:8 : Objet de type %m9:16 incorrect
  1036.  
  1037. MOTERR(1:8) = 'VOLUMAC '
  1038. MOTERR(9:16) = 'NONMACRO'
  1039. CALL ERREUR(787)
  1040. RETURN
  1041. ENDIF
  1042.  
  1043. TYPE=' '
  1044. CALL ACMO(MTABLE,'MACRO1',TYPE,MELEME)
  1045. IF (TYPE.NE.'MAILLAGE') THEN
  1046. CALL KMACRO(MACRO,MELEME,MTABLE)
  1047. RETURN
  1048. ENDIF
  1049. TYPE = ' '
  1050. CALL ACMO(MTABLE,'CENTREP0',TYPE,MELEMQ)
  1051. IF (TYPE.NE.'MAILLAGE') THEN
  1052. CALL KCTRP0(MTABLE,MELEMQ)
  1053. RETURN
  1054. ENDIF
  1055.  
  1056. CALL KVOL(MELEME,MELEMQ,'CENTREP0',IPOINT)
  1057. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'VOLUMAC ','CHPOINT ',IPOINT)
  1058. IF(KECR.EQ.1)THEN
  1059. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  1060. CALL ECROBJ('CHPOINT ',IPOINT)
  1061. ENDIF
  1062. RETURN
  1063.  
  1064. C
  1065. C- DOMAINE.'MACRO '
  1066. C
  1067. 460 CONTINUE
  1068. TYPE=' '
  1069. CALL ACMO(MTABLE,'MACRO',TYPE,MELEME)
  1070. IPOINT = MELEME
  1071. IF(KECR.EQ.1)THEN
  1072. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1073. CALL ECROBJ('MAILLAGE',IPOINT)
  1074. ENDIF
  1075. RETURN
  1076. C
  1077. C- DOMAINE.'QUADRATI'
  1078. C
  1079. 470 CONTINUE
  1080. TYPE=' '
  1081. CALL ACMO(MTABLE,'QUADRATI',TYPE,MELEME)
  1082. IPOINT = MELEME
  1083. IF(KECR.EQ.1)THEN
  1084. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1085. CALL ECROBJ('MAILLAGE',IPOINT)
  1086. ENDIF
  1087. RETURN
  1088. C
  1089. C- DOMAINE.'MACRO1'
  1090. C
  1091. 480 CONTINUE
  1092. TYPE=' '
  1093. CALL ACMO(MTABLE,'MACRO1',TYPE,MELEME)
  1094. IF (TYPE.NE.'MAILLAGE') THEN
  1095. TYPE=' '
  1096. CALL ACMO(MTABLE,'MACRO',TYPE,MACRO)
  1097. IF(TYPE.NE.'MAILLAGE')THEN
  1098. TYPE=' '
  1099. CALL ACMO(MTABLE,'MAILLAGE',TYPE,IPOINT)
  1100. RETURN
  1101. ELSE
  1102. CALL KMACRO(MACRO,IPOINT,MTABLE)
  1103. RETURN
  1104. ENDIF
  1105. ENDIF
  1106.  
  1107. IPOINT = MELEME
  1108. IF(KECR.EQ.1)THEN
  1109. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1110. CALL ECROBJ('MAILLAGE',IPOINT)
  1111. ENDIF
  1112. RETURN
  1113. C
  1114. C-*????.'XXDXDY' : En chantier
  1115. C
  1116. 490 CONTINUE
  1117. TYPE = ' '
  1118. CALL ACMO(MTABLE,'XXDXDY',TYPE,MCHPOI)
  1119. C write(6,*)' ACMO XXDXDY : MTABLE=',MTABLE
  1120. IF (TYPE.NE.'CHPOINT '.OR.IPREC.EQ.0) THEN
  1121. C write(6,*)' On a pas trouve XXDXDY On le calcule '
  1122. CALL ECROBJ('TABLE ',MTABLE)
  1123. C write(6,*)' ECROBJ XXDXDY : MTABLE=',MTABLE
  1124. CALL KDXDY
  1125. TYPE = 'CHPOINT '
  1126. CALL LIROBJ(TYPE,MCHPOI,1,IRET)
  1127. IF (IRET.EQ.0) GOTO 5000
  1128. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXDXDY','CHPOINT ',MCHPOI)
  1129. ENDIF
  1130. IPOINT = MCHPOI
  1131. IF(KECR.EQ.1)THEN
  1132. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  1133. CALL ECROBJ('CHPOINT ',IPOINT)
  1134. ENDIF
  1135. C write(6,*)' retour XXDXDY : MTABLE=',MTABLE
  1136. RETURN
  1137. C
  1138. C- DOMAINE.'MSOMMET'
  1139. C
  1140. 500 CONTINUE
  1141. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  1142. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  1143. TYPE=' '
  1144. CALL ACMO(MTABLE,'MSOMMET ',TYPE,MMLEMS)
  1145. IF(TYPE.NE.'MAILLAGE')THEN
  1146. I501 = 1
  1147. GO TO 1300
  1148. ENDIF
  1149. 501 CONTINUE
  1150. IPOINT = MMLEMS
  1151. IF(KECR.EQ.1)THEN
  1152. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1153. CALL ECROBJ('MAILLAGE',IPOINT)
  1154. ENDIF
  1155. RETURN
  1156. C
  1157. C- DOMAINE.'MMAIL '
  1158. C
  1159. 510 CONTINUE
  1160. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  1161. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  1162. TYPE=' '
  1163. CALL ACMO(MTABLE,'MMAIL ',TYPE,MMELEM)
  1164. IF(TYPE.NE.'MAILLAGE')THEN
  1165. I511 = 1
  1166. GOTO 1300
  1167. ENDIF
  1168. 511 CONTINUE
  1169. IPOINT = MMELEM
  1170. IF(KECR.EQ.1)THEN
  1171. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1172. CALL ECROBJ('MAILLAGE',IPOINT)
  1173. ENDIF
  1174. RETURN
  1175. C
  1176. C- DOMAINE.'MLGVNIMP'
  1177. C
  1178. 520 CONTINUE
  1179. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  1180. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  1181. TYPE=' '
  1182. CALL ACMO(MTABLE,'MLGVNIMP',TYPE,MELETI)
  1183.  
  1184. IF(TYPE.EQ.'MAILLAGE')THEN
  1185. IPOINT = MELETI
  1186. IF(KECR.EQ.1)THEN
  1187. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1188. CALL ECROBJ('MAILLAGE',IPOINT)
  1189. ENDIF
  1190. RETURN
  1191. ELSE
  1192. TYPE=' '
  1193. CALL ACMO(MTABLE,'SOMMET',TYPE,MELEME)
  1194. IF (TYPE.NE.'MAILLAGE') GO TO 5000
  1195. CALL MEULTI(MELEME,MELETI,TYPE)
  1196. IF (TYPE.NE.'MAILLAGE') THEN
  1197. C Indice %m1:8 : Objet de type %m9:16 incorrect
  1198.  
  1199. MOTERR(1:8) = NOM
  1200. MOTERR(9:16) = TYPE
  1201. CALL ERREUR(787)
  1202. RETURN
  1203. ENDIF
  1204. CALL ECMO(MTABLE,'MLGVNIMP','MAILLAGE',MELETI)
  1205. IPOINT = MELETI
  1206. IF(KECR.EQ.1)THEN
  1207. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1208. CALL ECROBJ('MAILLAGE',IPOINT)
  1209. ENDIF
  1210. RETURN
  1211. ENDIF
  1212. C
  1213. C- DOMAINE.'MLGVTIMP'
  1214. C
  1215. 530 CONTINUE
  1216. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  1217. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  1218. TYPE=' '
  1219. CALL ACMO(MTABLE,'MLGVTIMP',TYPE,MELETI)
  1220.  
  1221. IF(TYPE.EQ.'MAILLAGE')THEN
  1222. IPOINT = MELETI
  1223. IF(KECR.EQ.1)THEN
  1224. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1225. CALL ECROBJ('MAILLAGE',IPOINT)
  1226. ENDIF
  1227. RETURN
  1228. ELSE
  1229. TYPE=' '
  1230. CALL ACMO(MTABLE,'SOMMET',TYPE,MELEME)
  1231. IF (TYPE.NE.'MAILLAGE') GO TO 5000
  1232. CALL MEULTI(MELEME,MELETI,TYPE)
  1233. IF (TYPE.NE.'MAILLAGE') THEN
  1234. C Indice %m1:8 : Objet de type %m9:16 incorrect
  1235.  
  1236. MOTERR(1:8) = NOM
  1237. MOTERR(9:16) = TYPE
  1238. CALL ERREUR(787)
  1239. RETURN
  1240. ENDIF
  1241. CALL ECMO(MTABLE,'MLGVTIMP','MAILLAGE',MELETI)
  1242. IPOINT = MELETI
  1243. IF(KECR.EQ.1)THEN
  1244. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1245. CALL ECROBJ('MAILLAGE',IPOINT)
  1246. ENDIF
  1247. RETURN
  1248. ENDIF
  1249. C
  1250. C- DOMAINE.'ENVELOPP'
  1251. C
  1252. 540 CONTINUE
  1253. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  1254. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  1255. TYPE=' '
  1256. CALL ACMO(MTABLE,'ENVELOPP',TYPE,MENVEL)
  1257.  
  1258. IF(TYPE.EQ.'MAILLAGE')THEN
  1259. IPOINT = MENVEL
  1260. IF(KECR.EQ.1)THEN
  1261. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1262. CALL ECROBJ('MAILLAGE',IPOINT)
  1263. ENDIF
  1264. RETURN
  1265. ELSE
  1266. TYPE = ' '
  1267. C CALL ACMO(MTABLE,'FACEP',TYPE,MELEMP)
  1268. CALL ACMO(MTABLE,'FACEL2',TYPE,MELEF2)
  1269. IF (TYPE.NE.'MAILLAGE') THEN
  1270. I541 = 1
  1271. GOTO 1100
  1272. ENDIF
  1273. ENDIF
  1274. 541 CONTINUE
  1275. TYPE = ' '
  1276. CALL ACMO(MTABLE,'QUAF',TYPE,MELEMQ)
  1277. 542 CONTINUE
  1278. CALL MENVLP(MELEMQ,MENVEL,MCHPOI,IRET)
  1279. IF (IRET.EQ.0) GOTO 5000
  1280. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'ENVELOPP','MAILLAGE',MENVEL)
  1281. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'OENVELOP','CHPOINT',MCHPOI)
  1282. IPOINT = MENVEL
  1283. IF(KECR.EQ.1.AND.NOMI.EQ.'ENVELOPP')THEN
  1284. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1285. CALL ECROBJ('MAILLAGE',IPOINT)
  1286. ENDIF
  1287. RETURN
  1288. C
  1289. C- DOMAINE.'FACEL2' : MELEME connectivite face -> centre (partitionne)
  1290. C rgt partitionne
  1291. 550 CONTINUE
  1292. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  1293. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  1294. TYPE = ' '
  1295. CALL ACMO(MTABLE,'FACEL2',TYPE,MELEF2)
  1296. IF (TYPE.NE.'MAILLAGE') THEN
  1297. I551 = 1
  1298. GOTO 1100
  1299. ENDIF
  1300. 551 CONTINUE
  1301. IPOINT = MELEF2
  1302. IF(KECR.EQ.1)THEN
  1303. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1304. CALL ECROBJ('MAILLAGE',IPOINT)
  1305. ENDIF
  1306. RETURN
  1307. C
  1308. C- DOMAINE.'QUAF ' : Maillage QUAF du domaine considéré
  1309. C
  1310. 560 CONTINUE
  1311. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  1312. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  1313. TYPE=' '
  1314. CALL ACMO(MTABLE,'QUAF ',TYPE,MELEME)
  1315. IF (TYPE.NE.'MAILLAGE') THEN
  1316. C Indice %m1:8 : Objet de type %m9:16 incorrect
  1317.  
  1318. MOTERR(1:8) = NOM
  1319. MOTERR(9:16) = TYPE
  1320. CALL ERREUR(787)
  1321. RETURN
  1322. ENDIF
  1323. IPOINT = MELEME
  1324. IF(KECR.EQ.1)THEN
  1325. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1326. CALL ECROBJ('MAILLAGE',IPOINT)
  1327. ENDIF
  1328. RETURN
  1329. C
  1330. C- DOMAINE.'XXCTREP1'
  1331. C
  1332. 570 CONTINUE
  1333. TYPE = ' '
  1334. CALL ACMO(MTABLE,'XXCTREP1',TYPE,MCHPOI)
  1335. IF (TYPE.NE.'CHPOINT ') THEN
  1336. CALL ECRCHA('CENTREP1')
  1337. CALL ECROBJ('TABLE ',MTABLE)
  1338. CALL CADGSI
  1339. TYPE = 'CHPOINT '
  1340. CALL LIROBJ(TYPE,MCHPOI,1,IRET)
  1341. IF (IRET.EQ.0) GOTO 5000
  1342. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXCTREP1','CHPOINT ',MCHPOI)
  1343. ENDIF
  1344. IPOINT = MCHPOI
  1345. IF(KECR.EQ.1)THEN
  1346. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  1347. CALL ECROBJ('CHPOINT ',IPOINT)
  1348. ENDIF
  1349. C write(6,*) 'Retour XXDIAGSI : MTABLE=',MTABLE
  1350. RETURN
  1351. C
  1352. C- DOMAINE.'XXCTREP0'
  1353. C
  1354. 580 CONTINUE
  1355. TYPE = ' '
  1356. CALL ACMO(MTABLE,'XXCTREP0',TYPE,MCHPOI)
  1357. IF (TYPE.NE.'CHPOINT ') THEN
  1358. TYPE = ' '
  1359. CALL ACMO(MTABLE,'XXVOLUM ',TYPE,MCHPOI)
  1360. IF (TYPE.NE.'CHPOINT ') THEN
  1361. write(6,*) 'On ne trouve pas XXVOLUM -> On le calcule'
  1362. TYPE=' '
  1363. CALL ACMO(MTABLE,'CENTRE',TYPE,MELEMC)
  1364. CALL ACMO(MTABLE,'MAILLAGE',TYPE,MELEME)
  1365. CALL KVOL(MELEME,MELEMC,'CENTRE',MCHPOI)
  1366. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXCTREP0','CHPOINT ',MCHPOI)
  1367. IF(ISTOK.EQ.1)CALL ECMO(MTABLE,'XXVOLUM ','CHPOINT ',MCHPOI)
  1368. ENDIF
  1369. ENDIF
  1370. IPOINT = MCHPOI
  1371. IF(KECR.EQ.1)THEN
  1372. CALL ACTOBJ('CHPOINT ',IPOINT,1)
  1373. CALL ECROBJ('CHPOINT ',IPOINT)
  1374. ENDIF
  1375. RETURN
  1376. C
  1377. C- DOMAINE.'MAILFACE' : MELEME des elements face
  1378. C
  1379. 590 CONTINUE
  1380. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  1381. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  1382. TYPE = ' '
  1383. CALL ACMO(MTABLE,'MAILFACE',TYPE,MFF2)
  1384. IF (TYPE.NE.'MAILLAGE') THEN
  1385. I591 = 1
  1386. GOTO 1100
  1387. ENDIF
  1388. 591 CONTINUE
  1389. IPOINT = MFF2
  1390. IF(KECR.EQ.1)THEN
  1391. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1392. CALL ECROBJ('MAILLAGE',IPOINT)
  1393. ENDIF
  1394. RETURN
  1395. C
  1396. C- DOMAINE.'ARETE ' : MELEME des éléments arêtes
  1397. C
  1398. 600 CONTINUE
  1399. CALL ACMM(MTABLE,'SOUSTYPE',TYPE)
  1400. IF (TYPE.NE.'DOMAINE ') GOTO 5010
  1401. TYPE = ' '
  1402. CALL ACMO(MTABLE,'QUAF ',TYPE,MELEME)
  1403. IF (TYPE.NE.'MAILLAGE') THEN
  1404. C Indice %m1:8 : Objet de type %m9:16 incorrect
  1405.  
  1406. MOTERR(1:8) = NOM
  1407. MOTERR(9:16) = TYPE
  1408. CALL ERREUR(787)
  1409. RETURN
  1410. ENDIF
  1411. TYPE = ' '
  1412. CALL ACMO(MTABLE,'ARETE ',TYPE,MARET)
  1413. IF (TYPE.NE.'MAILLAGE') THEN
  1414. CALL ECROBJ('MAILLAGE',MELEME)
  1415. CALL CHANLG
  1416. CALL LIROBJ('MAILLAGE',MARET,1,IRETOU)
  1417. IF (IRETOU.NE.1) THEN
  1418. C Indice %m1:8 : Objet de type %m9:16 incorrect
  1419.  
  1420. MOTERR(1:8) = 'ARETE'
  1421. MOTERR(9:16) = 'MAILLAGE'
  1422. CALL ERREUR(787)
  1423. RETURN
  1424. ENDIF
  1425. ENDIF
  1426. IPOINT = MARET
  1427. IF(KECR.EQ.1)THEN
  1428. CALL ACTOBJ('MAILLAGE',IPOINT,1)
  1429. CALL ECROBJ('MAILLAGE',IPOINT)
  1430. ENDIF
  1431. RETURN
  1432. C
  1433. C- Emplacement libre
  1434. C
  1435. 610 CONTINUE
  1436. IPOINT = 0
  1437. RETURN
  1438. C
  1439. C
  1440. C---------------------------------------------------------
  1441. C Traitement commun à plusieures options et mise en facteur
  1442. C---------------------------------------------------------
  1443. C
  1444. C
  1445. C- Recherche à l'indice mot MIND d'une table de sous-type MINDS
  1446. C- ATTENTION : ERREUR NON GERE POUR L'INSTANT : Si IPTR.EQ.0 5000
  1447. C
  1448. 1000 CONTINUE
  1449. TYPE = ' '
  1450. CALL ACMO(MTABLE,MIND,TYPE,IPTR)
  1451. IF (TYPE.EQ.'TABLE ') THEN
  1452. TYPE = ' '
  1453. CALL ACMM(IPTR,'SOUSTYPE',TYPE)
  1454. IF (TYPE.EQ.MINDS) THEN
  1455. IPOINT = IPTR
  1456. ENDIF
  1457. ELSE IF(TYPE.EQ.'MMODEL')THEN
  1458. CALL LEKMOD(IPTR,IPOINT,INEFMD)
  1459. IF(IPOINT.EQ.0)RETURN
  1460. ENDIF
  1461. RETURN
  1462. C
  1463. C- Construction des indices 'FACE', 'FACEP', 'FACEL', 'CENTRE', 'ELTFA', 'FACEL2'
  1464. C- d'une table de sous-type 'DOMAINE' utilisé pour certaines options
  1465. C
  1466. 1100 CONTINUE
  1467. TYPE = ' '
  1468. CALL ACMO(MTABLE,'MAILLAGE',TYPE,MELEME)
  1469. IF (TYPE.NE.'MAILLAGE') GOTO 5000
  1470.  
  1471. NOMC=' '
  1472. CALL TQ2CF(MELEME,MELEMQ,MELEMK,
  1473. & MELEF1,MELAF,MELEMP,MELEMF,MELEF2,MFF2,NOMC,IKR)
  1474. IF(IKR.EQ.1)IQUAD=1
  1475.  
  1476. IF(IQUAD.EQ.1)THEN
  1477. CALL ECMO(MTABLE,'QUADRATIQUE','MAILLAGE',MELEME)
  1478. CALL ECMO(MTABLE,'MAILLAGE','MAILLAGE',MELEMQ)
  1479. ENDIF
  1480.  
  1481. CALL ECMO(MTABLE,'FACE','MAILLAGE',MELEF1)
  1482. CALL ECMO(MTABLE,'FACEL','MAILLAGE',MELEMF)
  1483. CALL ECMO(MTABLE,'FACEL2','MAILLAGE',MELEF2)
  1484. CALL ECMO(MTABLE,'FACEP','MAILLAGE',MELEMP)
  1485. CALL ECMO(MTABLE,'CENTRE','MAILLAGE',MELEMK)
  1486. CALL ECMO(MTABLE,'ELTFA','MAILLAGE',MELAF)
  1487. CALL ECMO(MTABLE,'MAILFACE','MAILLAGE',MFF2)
  1488.  
  1489. IF (I211 .EQ.1) GOTO 211
  1490. IF (I221 .EQ.1) GOTO 221
  1491. IF (I231 .EQ.1) GOTO 231
  1492. IF (I271 .EQ.1) GOTO 271
  1493. IF (I291 .EQ.1) GOTO 291
  1494. IF (I391 .EQ.1) GOTO 391
  1495. IF (I541 .EQ.1) GOTO 541
  1496. IF (I551 .EQ.1) GOTO 551
  1497. IF (I1201.EQ.1) GOTO 1201
  1498. IF (I591 .EQ.1) GOTO 591
  1499. C
  1500. C- Construction des indices 'XXNORMAE', 'XXSURFAC' et 'XXNORMAF'
  1501. C- d'une table de sous-type 'DOMAINE' utilisé pour certaines options
  1502. C
  1503. 1200 CONTINUE
  1504. TYPE = ' '
  1505. CALL ACMO(MTABLE,'FACE',TYPE,MELEME)
  1506. IF (TYPE.NE.'MAILLAGE') THEN
  1507. I1201 = 1
  1508. GOTO 1100
  1509. ENDIF
  1510. 1201 CONTINUE
  1511. CALL KNRF(MTABLE,ICHE,ICHPV,ICHP)
  1512. IF(ISTOK.EQ.1)THEN
  1513. CALL ECMO(MTABLE,'XXNORMAE','MCHAML ',ICHE)
  1514. CALL ECMO(MTABLE,'XXSURFAC','CHPOINT ',ICHP)
  1515. CALL ECMO(MTABLE,'XXNORMAF','CHPOINT ',ICHPV)
  1516. ENDIF
  1517.  
  1518. IF (I241.EQ.1) GOTO 241
  1519. IF (I251.EQ.1) GOTO 251
  1520. IF (I301.EQ.1) GOTO 301
  1521. IF (I542.EQ.1) GOTO 542
  1522. C
  1523. C Construction des indices 'MSOMMET' et 'MMAIL' d'une table
  1524. C de sous-types 'DOMAINE'.
  1525. C A l'indice 'MSOMMET', on trouve le maillage des "vrais"
  1526. C sommets (les sommets géométriques des éléments), par
  1527. C opposition à l'indice 'SOMMET' qui est le spg des inconnues
  1528. C définies dans l'espace L2.
  1529. C A l'indice 'MMAIL' qui lui correspond, on trouve le maillage
  1530. C des "vrais" éléments (les éléments géométriques :
  1531. C ils ont le type le plus simple pour un forme
  1532. C géométrique donnée (ex. TRI3, PYR5, CUB8...))
  1533. C par opposition à l'indice 'MAILLAGE' qui contient
  1534. C éventuellement des éléments avec plus de points qui sont les
  1535. C spg des différentes inconnues.
  1536. C spg=support géométrique.
  1537. C
  1538. 1300 CONTINUE
  1539. TYPE=' '
  1540. CALL ACMO(MTABLE,'QUAF ',TYPE,MELEME)
  1541. IF (TYPE.NE.'MAILLAGE') GO TO 5000
  1542. CALL MSOMET(MELEME,MMELEM,MMLEMS,TYPE)
  1543. IF (TYPE.NE.'MAILLAGE') THEN
  1544. C Indice %m1:8 : Objet de type %m9:16 incorrect
  1545.  
  1546. MOTERR(1:8) = NOM
  1547. MOTERR(9:16) = TYPE
  1548. CALL ERREUR(787)
  1549. RETURN
  1550. ENDIF
  1551. CALL ECMO(MTABLE,'MMAIL ','MAILLAGE',MMELEM)
  1552. CALL ECMO(MTABLE,'MSOMMET ','MAILLAGE',MMLEMS)
  1553.  
  1554. IF (I331.EQ.1) GOTO 331
  1555. IF (I341.EQ.1) GOTO 341
  1556. IF (I371.EQ.1) GOTO 370
  1557. IF (I501.EQ.1) GOTO 501
  1558. IF (I511.EQ.1) GOTO 511
  1559. C
  1560. C----------------------------------------
  1561. C Erreur détectée : traitement impossible
  1562. C----------------------------------------
  1563. C
  1564. 5000 CONTINUE
  1565. C Indice %m1:8 : Problème de données détecté dans lektab
  1566.  
  1567. IPOINT = 0
  1568. MOTERR = NOM
  1569. CALL ERREUR(792)
  1570. RETURN
  1571. 5010 CONTINUE
  1572. C Indice %m1:8 : La table n'est pas de sous-type %m9:16
  1573.  
  1574. IPOINT = 0
  1575. MOTERR = NOM
  1576. MOTERR(9:16) ='DOMAINE '
  1577. CALL ERREUR(790)
  1578. RETURN
  1579. C
  1580. END
  1581.  
  1582.  
  1583.  

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