Télécharger opto1.eso

Retour à la liste

Numérotation des lignes :

opto1
  1. C OPTO1 SOURCE GOUNAND 24/09/27 21:15:14 12019
  2. SUBROUTINE OPTO1(ITOPO,IELEM,IPVIRT,ICMETR,
  3. $ ITOPA,ICMETA)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. IMPLICIT INTEGER (I-N)
  6. C***********************************************************************
  7. C NOM : OPTO1
  8. C DESCRIPTION : Une implémentation de l'amélioration d'une topologie
  9. C autour d'un élément. On reprend OPTITOPO pour le corps
  10. C du programme. On reprend l'extraction et la topologie inverse de
  11. C EXTO. Le point crucial sera d'implémenter la modification de la
  12. C topologie : enlever les anciens éléments et mettre les nouveaux.
  13. C
  14. C
  15. C Ici, on fait quelques tests, on passe les entrées en numérotation
  16. C locale basée sur celle de ITOPO, on crée également un MCOORD local
  17. C avant de passer à OPTO2. En effet, OPTO2 sera suceptible de créer
  18. C des noeuds
  19. C
  20. C En sortie, on repasse en numérotation globale, on inclue les
  21. C éventuels nouveaux noeuds créés dans OPTO2 dans le MCOORD global.
  22. C
  23. C La programmation est inspirée de demete.eso et reprise de
  24. C exto1.eso
  25. C
  26. C
  27. C LANGAGE : ESOPE
  28. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  29. C mél : gounand@semt2.smts.cea.fr
  30. C***********************************************************************
  31. C APPELES : OPTO2
  32. C APPELES (E/S) :
  33. C APPELES (BLAS) :
  34. C APPELES (CALCUL) :
  35. C APPELE PAR : PROPTO
  36. C***********************************************************************
  37. C SYNTAXE GIBIANE :
  38. C ENTREES :
  39. C ENTREES/SORTIES :
  40. C SORTIES :
  41. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  42. C***********************************************************************
  43. C VERSION : v1, 06/10/2017, version initiale
  44. C HISTORIQUE : v1, 06/10/2017, création
  45. C HISTORIQUE :
  46. C HISTORIQUE :
  47. C***********************************************************************
  48. -INC PPARAM
  49. -INC CCOPTIO
  50. -INC TMATOP2
  51. -INC SMELEME
  52. * Numerotation globale
  53. POINTEUR ITOPO.MELEME,IELEM.MELEME
  54. POINTEUR ITOPA.MELEME
  55. ** Numerotation locale
  56. POINTEUR JTOPO.MELEME
  57. POINTEUR JELEM.MELEME
  58. -INC SMCHPOI
  59. POINTEUR ICMETR.MCHPOI
  60. POINTEUR ICMETA.MCHPOI
  61. -INC SMCOORD
  62. * Numerotation globale
  63. POINTEUR ICOORD.MCOORD
  64. ** Numerotation locale
  65. POINTEUR JCOORD.MCOORD
  66. -INC TMATOP1
  67. *-INC STOPINV
  68. *-INC STRAVJ
  69. *-INC SMETRIQ
  70. POINTEUR JCMETR.METRIQ
  71. -INC TMTRAV
  72. SEGMENT MISDEF
  73. INTEGER ISDEF(NNIN,NNNOE)
  74. ENDSEGMENT
  75. -INC SMLMOTS
  76. POINTEUR JNMETR.MLMOTS
  77. *
  78. * Passage de numerotation globale -> locale
  79. * et locale -> globale
  80. SEGMENT ICPR(XCOOR(/1)/(IDIM+1))
  81. SEGMENT IDCP(NPTINI)
  82. * integer oooval
  83. logical lnul
  84. CHARACTER*24 FORMA
  85. CHARACTER*4 MOT
  86. INTEGER IMPR,IRET
  87. * Noms de composantes pour la métrique
  88.  
  89. *
  90. * Executable statements
  91. *
  92. impr=0
  93. IF (IMPR.GE.5) WRITE(IOIMP,*) 'Entrée dans opto1.eso'
  94. IDIMP=IDIM+1
  95. ICOORD=MCOORD
  96. SEGACT MCOORD
  97. * write(ioimp,*) 'opto1 debut : nbpts, xcoor=',nbpts,xcoor(/1)/(idim
  98. * $ +1)
  99. IBPTS=NBPTS
  100. * On se simplifie la vie en ne considérant que des maillages simples
  101. * call ecmai1(itopo,0)
  102. SEGACT ITOPO
  103. NBSOUS=ITOPO.LISOUS(/1)
  104. NBNN=ITOPO.NUM(/1)
  105. IF (NBSOUS.NE.0.OR.NBNN.NE.IDIMP) THEN
  106. WRITE(IOIMP,*)
  107. $ 'Topologie : pas un maillage de simplex volumiques'
  108. GOTO 9999
  109. ENDIF
  110. SEGACT IELEM
  111. NBSOUS=IELEM.LISOUS(/1)
  112. NBELEM=IELEM.NUM(/2)
  113. * IF (NBSOUS.NE.0.OR.NBELEM.NE.1) THEN
  114. IF (NBSOUS.NE.0) THEN
  115. * WRITE(IOIMP,*) 'Deuxieme maillage : pas un element unique'
  116. WRITE(IOIMP,*) 'Deuxieme maillage : pas un maillage simple'
  117. GOTO 9999
  118. ENDIF
  119. * Correspondances de numérotation
  120. SEGINI ICPR
  121. IK=0
  122. DO 23 IEL=1,ITOPO.NUM(/2)
  123. DO 230 INO=1,ITOPO.NUM(/1)
  124. IP=ITOPO.NUM(INO,IEL)
  125. IF (ICPR(IP).EQ.0) THEN
  126. IK=IK+1
  127. ICPR(IP)=IK
  128. ENDIF
  129. 230 CONTINUE
  130. 23 CONTINUE
  131. NBLINI=ITOPO.NUM(/2)
  132. NPTINI=IK
  133. SEGINI IDCP
  134. NPTBAS=XCOOR(/1)/IDIMP
  135. DO 500 I=1,NPTBAS
  136. if (icpr(i).ne.0) IDCP(ICPR(I))=I
  137. 500 CONTINUE
  138. if (IMPR.GE.6) then
  139. write(ioimp,*) 'Nb noeud globaux,locaux=',NPTBAS,IK
  140. * write(ioimp,*) 'ICPR'
  141. * write(ioimp,187) (ICPR(I),I=1,ICPR(/1))
  142. write(ioimp,*) 'IDCP'
  143. write(ioimp,187) (IDCP(I),I=1,IDCP(/1))
  144. endif
  145. IF (IMPR.GE.3) THEN
  146. write(ioimp,*) 'opto1.eso : topologie en coord globales : '
  147. call ecmai1(itopo,0)
  148. segact itopo*mod
  149. ENDIF
  150. *
  151. IF (IDIM.EQ.2) THEN
  152. NELMOY=15
  153. NPOMOY=10
  154. ELSEIF (IDIM.EQ.3) THEN
  155. NELMOY=40
  156. NPOMOY=20
  157. ELSE
  158. write(ioimp,*) 'idim=',idim
  159. goto 9999
  160. ENDIF
  161.  
  162. SEGINI TRAVJ
  163. NVINI=NBLINI
  164. NVCOU=NBLINI
  165. NVMAX=NBLINI+MAX(NELMOY,NBLINI)
  166. NPINI=NPTINI
  167. NPCOU=NPTINI
  168. NPMAX=NPTINI
  169. *ijob IF (IJOB.NE.0) NPMAX=NPMAX+MAX(NPOMOY,NPTINI)
  170. IF (IAJNO.NE.0) NPMAX=NPMAX+MAX(NPOMOY,NPTINI)
  171. *
  172. * Melemes en coordonnées locales
  173. * Topologie
  174. NBELEM=travj.NVMAX
  175. NBNN=IDIMP
  176. NBSOUS=0
  177. NBREF=0
  178. SEGINI,JTOPO
  179. JTOPO.ITYPEL=ITOPO.ITYPEL
  180. TRAVJ.TOPO=JTOPO
  181. DO 33 IEL=1,travj.nvcou
  182. DO 330 INO=1,IDIMP
  183. IP=ITOPO.NUM(INO,IEL)
  184. JP=ICPR(IP)
  185. IF (JP.NE.0) THEN
  186. JTOPO.NUM(INO,IEL)=JP
  187. ELSE
  188. WRITE(IOIMP,*) 'Erreur de programmation'
  189. GOTO 9999
  190. ENDIF
  191. 330 CONTINUE
  192. 33 CONTINUE
  193. * Eventuellement, IELEM=ITOP donc à désactiver ici
  194. SEGDES IELEM
  195. SEGDES ITOPO
  196. IF (IMPR.GE.4) THEN
  197. write(ioimp,*) 'opto1.eso : topologie en coord locales : '
  198. call ecmai1(jtopo,0)
  199. segact jtopo*mod
  200. ENDIF
  201.  
  202. * Noeud virtuel en coordonnées locales
  203. IF (IPVIRT.NE.0) THEN
  204. JPVIRT=ICPR(IPVIRT)
  205. *! Ceci peut se produire quand on veut conserver le bord total
  206. *! On ne l'interdit plus
  207. *! IF (JPVIRT.EQ.0) THEN
  208. *! write(ioimp,*)
  209. *! $ 'Noeud virtuel non inclus dans la topologie ?'
  210. *! goto 9999
  211. *! ENDIF
  212. ELSE
  213. JPVIRT=0
  214. ENDIF
  215. TRAVJ.PVIRT=JPVIRT
  216. IF (IMPR.GE.4) THEN
  217. write(ioimp,*) 'opto1.eso : noeud virtuel en coord locales : '
  218. $ ,JPVIRT
  219. ENDIF
  220. * Element autour duquel on extrait
  221. * write(ioimp,*) 'opto1.eso : element en coord globales : '
  222. * call ecmai1(ielem,0)
  223. * segact ielem*mod
  224. SEGINI,JELEM=IELEM
  225. DO 43 IEL=1,JELEM.NUM(/2)
  226. DO 430 INO=1,JELEM.NUM(/1)
  227. IP=JELEM.NUM(INO,IEL)
  228. JP=ICPR(IP)
  229. * Il faudra gérer le cas où certains noeuds de JELEM sont nuls. Voir
  230. * dans EXTO3.
  231. * IF (JP.NE.0) THEN
  232. JELEM.NUM(INO,IEL)=JP
  233. * ELSE
  234. IF (JP.EQ.0) THEN
  235. WRITE(IOIMP,*)
  236. $ 'Element fourni non inclus dans la topologie'
  237. * Pour avoir un comportement identique à la version Gibiane de
  238. * EXTOPLOC, on annule l'élément. La gestion des éléments nuls est
  239. * faite dans exto3.eso
  240. DO INOO=1,JELEM.NUM(/1)
  241. JELEM.NUM(INOO,IEL)=0
  242. ENDDO
  243. GOTO 43
  244. ENDIF
  245. * GOTO 9999
  246. * ENDIF
  247. 430 CONTINUE
  248. 43 CONTINUE
  249. IF (IMPR.GE.6) THEN
  250. write(ioimp,*) 'opto1.eso : element en coord locales : '
  251. call ecmai1(jelem,0)
  252. segact jelem*mod
  253. ENDIF
  254. * debug
  255. impr=0
  256. * Passage des coordonnées en locale
  257. * NBPTS=NPTINI
  258. NBPTS=travj.NPMAX
  259. SEGINI,JCOORD
  260. TRAVJ.COORD=JCOORD
  261. DO 53 IPL=1,travj.npcou
  262. IREFL=IDIMP*(IPL-1)
  263. IP=IDCP(IPL)
  264. IREF=IDIMP*(IP-1)
  265. DO 530 IC=1,IDIMP
  266. JCOORD.XCOOR(IREFL+IC)=XCOOR(IREF+IC)
  267. 530 CONTINUE
  268. 53 CONTINUE
  269. * Passage de la métrique en local
  270. *
  271. IF (ICMETR.NE.0) THEN
  272. * Définition des noms de composantes
  273. JGN=4
  274. JGM=0
  275. IF (IMET.EQ.3) JGM=1
  276. * On a enlevé le cas orthotrope
  277. * IF (IMET.EQ.4) JGM=IDIM
  278. IF (IMET.EQ.4) JGM=IDIM*(IDIM+1)/2
  279. SEGINI JNMETR
  280. DO I=1,JGM
  281. JNMETR.MOTS(I)='G '
  282. ENDDO
  283. * On a enlevé le cas orthotrope
  284. * IF (IMET.EQ.4) THEN
  285. * DO I=1,IDIM
  286. * WRITE(JNMETR.MOTS(I)(2:2),FMT='(I1)') I
  287. * ENDDO
  288. * ELSEIF (IMET.EQ.5) THEN
  289. IF (IMET.EQ.4) THEN
  290. idx=0
  291. DO I=1,IDIM
  292. DO J=1,I
  293. idx=idx+1
  294. WRITE(JNMETR.MOTS(idx)(2:2),FMT='(I1)') I
  295. WRITE(JNMETR.MOTS(idx)(3:3),FMT='(I1)') J
  296. ENDDO
  297. ENDDO
  298. ENDIF
  299. *dbg WRITE (IOIMP,2019) (JNMETR.MOTS(I),I=1,JNMETR.MOTS(/2))
  300. *dbg 2019 FORMAT (20(2X,A4) )
  301. NNIN=JNMETR.MOTS(/2)
  302. NNNOE=travj.NPCOU
  303. if (iveri.ge.1) SEGINI MISDEF
  304. NNNOE=travj.NPMAX
  305. SEGINI JCMETR
  306. MCHPOI=ICMETR
  307. SEGACT MCHPOI
  308. NSOUPO=IPCHP(/1)
  309. DO ISOUPO=1,NSOUPO
  310. MSOUPO=IPCHP(ISOUPO)
  311. SEGACT MSOUPO
  312. NC=NOCOMP(/2)
  313. MELEME=IGEOC
  314. MPOVAL=IPOVAL
  315. SEGACT MELEME
  316. SEGACT MPOVAL
  317. N=VPOCHA(/1)
  318. DO IC=1,NC
  319. ININ=0
  320. DO JNIN=1,NNIN
  321. IF (NOCOMP(IC).EQ.JNMETR.MOTS(JNIN)) THEN
  322. ININ=JNIN
  323. GOTO 11
  324. ENDIF
  325. ENDDO
  326. 11 CONTINUE
  327. IF (ININ.NE.0) THEN
  328. DO I=1,N
  329. INNOE=ICPR(NUM(1,I))
  330. IF (INNOE.NE.0) THEN
  331. if (iveri.ge.1) ISDEF(ININ,INNOE)=1
  332. JCMETR.XIN(ININ,INNOE)=VPOCHA(I,IC)
  333. ENDIF
  334. ENDDO
  335. ENDIF
  336. ENDDO
  337. SEGDES MPOVAL
  338. SEGDES MELEME
  339. SEGDES MSOUPO
  340. ENDDO
  341. SEGDES MCHPOI
  342. if (iveri.ge.1) then
  343. * Vérification que la métrique a été définie sur tous les noeuds et
  344. * toutes les composantes
  345. DO J=1,ISDEF(/2)
  346. IF (J.NE.JPVIRT) THEN
  347. DO I=1,ISDEF(/1)
  348. IF (ISDEF(I,J).NE.1) THEN
  349. MOT=JNMETR.MOTS(I)
  350. INOD=IDCP(J)
  351. write(ioimp,*)
  352. $ 'Metrique non definie pour la composante '
  353. $ ,MOT,' au noeud ',INOD
  354. GOTO 9999
  355. ENDIF
  356. ENDDO
  357. ENDIF
  358. ENDDO
  359. SEGSUP MISDEF
  360. endif
  361. *dbg write(ioimp,*) 'Inimetr ok'
  362. ELSE
  363. JNMETR=0
  364. JCMETR=0
  365. ENDIF
  366. TRAVJ.NMETR=JNMETR
  367. TRAVJ.CMETR=JCMETR
  368. *tst WRITE(IOIMP,185) 'SEGMENT JCOORD ',JCOORD
  369. *tst WRITE(FORMA,FMT='("(1(",I1,"(1PG12.5,2X)))")') IDIMP
  370. *tst write(ioimp,*) 'forma=',forma
  371. *tst write(ioimp,*) 'XCOOR'
  372. *tst write(ioimp,forma) (jcoord.xcoor(I),I=1,jcoord.xcoor(/1))
  373. SEGSUP ICPR
  374. * La numérotation globale devient la locale dans ce bloc !!!
  375. MCOORD=JCOORD
  376. * Tous les arguments sont potentiellement des entrées-sorties
  377. * in EXTO2 SEGINI JTOPA
  378. * write(ioimp,*) ' opto1 : avant opto2 =',OOOVAL(2,1)
  379. CALL OPTO2(TRAVJ,JELEM)
  380. SEGSUP JELEM
  381. * write(ioimp,*) ' opto1 : apres opto2 =',OOOVAL(2,1)
  382. IF (IERR.NE.0) GOTO 555
  383. *
  384. * NPTFIN=JCOORD.XCOOR(/1)/IDIMP
  385. NPTFIN=travj.npcou
  386. if (jchang.eq.0) then
  387. ITOPA=ITOPO
  388. ICMETA=ICMETR
  389. IF (NPTINI.NE.NPTFIN) THEN
  390. write(ioimp,*) nptfin-nptini,' nouveaux noeuds crees'
  391. write(ioimp,*) 'pas normal car topologie inchangee'
  392. ENDIF
  393. * On rétablit la numérotation globale originelle et on rajoute les
  394. * noeuds nouvellement créés
  395. * ! Attention, il faut aussi rétablir le NBPTS suite aux changements
  396. * ! de Pierre dans SMCOORD
  397. NBPTS=IBPTS
  398. MCOORD=ICOORD
  399. else
  400. * Mise à jour de la topologie en rétablissant la numérotation
  401. * globale et en notant les numéros de noeuds utilisés dans ICPR car
  402. * on va restreindre la métrique interpolée à ces nouveaux noeuds
  403. IF (JCMETR.NE.0) THEN
  404. SEGINI ICPR
  405. IK=0
  406. ENDIF
  407. * On ne serait pas obligé de faire ceci mais alors, il faut faire
  408. * attention au cas où JTOPA=JTOPO
  409. * SEGINI,ITOPA=JTOPA
  410. * write(ioimp,*) 'opto1.eso : on a genere la topologie : '
  411. * call ecmai1(jtopo,0)
  412. * segact jtopo*mod
  413. * En place
  414. JTOPO=TRAVJ.TOPO
  415. ITOPA =JTOPO
  416. * Pour éviter une suprression dans topsup
  417. travj.topo=0
  418. if (nvcou.ne.nvmax) then
  419. nbnn=idimp
  420. nbelem=nvcou
  421. nbsous=0
  422. nbref=0
  423. segadj,itopa
  424. endif
  425. * write(ioimp,*) 'itopa'
  426. * call ecmail(itopa,0)
  427. * segact itopa*mod
  428. * On ajuste le nombre d'éléments
  429. DO 63 IEL=1,ITOPA.NUM(/2)
  430. DO 630 INO=1,ITOPA.NUM(/1)
  431. IPL=ITOPA.NUM(INO,IEL)
  432. IF (JCMETR.NE.0) THEN
  433. IF (ICPR(IPL).EQ.0) THEN
  434. IK=IK+1
  435. ICPR(IPL)=IK
  436. ENDIF
  437. ENDIF
  438. *
  439. IF (IPL.LE.NPTINI) THEN
  440. IP=IDCP(IPL)
  441. ELSE
  442. IP=IPL-NPTINI+NPTBAS
  443. ENDIF
  444. ITOPA.NUM(INO,IEL)=IP
  445. 630 CONTINUE
  446. 63 CONTINUE
  447. IF (IMPR.GE.3) THEN
  448. write(ioimp,*) 'opto1.eso : topologie amelioree totale : '
  449. call ecmai1(itopa,0)
  450. ENDIF
  451. IF (JCMETR.NE.0) THEN
  452. * La nouvelle métrique
  453. NNIN=JCMETR.XIN(/1)
  454. NNNOE=TRAVJ.NPCOU
  455. *dbg npmax=jcmetr.xin(/2)
  456. *dbg write(ioimp,*) 'nnin,nnnoe,npmax=',nnin,nnnoe,npmax
  457. *
  458. NSOUPO=1
  459. NAT=1
  460. SEGINI,MCHPOI
  461. IFOPOI=IFOUR
  462. JATTRI(1)=0
  463. MTYPOI=' '
  464. MOCHDE=' CHPOINT CREE PAR OPTO '
  465. NC=NNIN
  466. SEGINI,MSOUPO
  467. IPCHP(1)=MSOUPO
  468. DO ININ=1,NNIN
  469. NOCOMP(ININ)=JNMETR.MOTS(ININ)
  470. ENDDO
  471. NBSOUS=0
  472. NBREF=0
  473. NBNN=1
  474. NBELEM=IK
  475. N=NBELEM
  476. SEGINI,MPOVAL
  477. SEGINI,MELEME
  478. ITYPEL=1
  479. DO INNOE=1,NNNOE
  480. JK=ICPR(INNOE)
  481. IF (JK.NE.0) THEN
  482. IF (INNOE.LE.NPTINI) THEN
  483. NUM(1,JK)=IDCP(INNOE)
  484. ELSE
  485. NUM(1,JK)=INNOE-NPTINI+NPTBAS
  486. ENDIF
  487. DO ININ=1,NNIN
  488. VPOCHA(JK,ININ)=JCMETR.XIN(ININ,INNOE)
  489. ENDDO
  490. ENDIF
  491. ENDDO
  492. IGEOC=MELEME
  493. IPOVAL=MPOVAL
  494. SEGSUP ICPR
  495. * SEGDES,MPOVAL
  496. * SEGDES,MSOUPO
  497. * SEGDES,MELEME
  498. * SEGDES,MCHPOI
  499. ICMETA=MCHPOI
  500. ELSE
  501. ICMETA=0
  502. ENDIF
  503. SEGSUP IDCP
  504. * On rétablit la numérotation globale originelle et on rajoute les
  505. * noeuds nouvellement créés
  506. * ! Attention, il faut aussi rétablir le NBPTS suite aux changements
  507. * ! de Pierre dans SMCOORD
  508. NBPTS=IBPTS
  509. MCOORD=ICOORD
  510. IF (NPTINI.NE.NPTFIN) THEN
  511. SEGACT MCOORD*MOD
  512. if (impr.ge.4)
  513. $ write(ioimp,*) nptfin-nptini,' nouveaux noeuds crees'
  514. NBPTA=NPTBAS
  515. NBPTS=NBPTA+NPTFIN-NPTINI
  516. SEGADJ MCOORD
  517. nnonul=0
  518. DO 5000 I=NPTINI+1,NPTFIN
  519. lnul=.true.
  520. DO 5010 J=1,IDIMP
  521. XCOOR(NBPTA*IDIMP+J)=JCOORD.XCOOR((I-1)*IDIMP+J)
  522. lnul=lnul.and.(XCOOR(NBPTA*IDIMP+J).EQ.0.D0)
  523. 5010 CONTINUE
  524. NBPTA=NBPTA+1
  525. if (lnul) nnonul=nnonul+1
  526. 5000 CONTINUE
  527. if (iveri.ge.1.and.nnonul.ne.0) then
  528. write(ioimp,*) '!!! ',nnonul
  529. $ ,' nouveaux noeuds nuls crees'
  530. * goto 9999
  531. endif
  532. SEGACT MCOORD
  533. ENDIF
  534. ENDIF
  535. * write(ioimp,*) 'opto1 fin : nbpts, xcoor=',nbpts,xcoor(/1)/(idim
  536. * $ +1)
  537. * SEGDES MCOORD
  538. * write(ioimp,*) ' opto1 : avant segsup=',OOOVAL(2,1)
  539. * if (icmeta.ne.0) SEGDES ICMETA
  540. * Ici Jcoors
  541. CALL TOPSUP(TRAVJ)
  542. * write(ioimp,*) ' opto1 : apres segsup=',OOOVAL(2,1)
  543. *
  544. * Normal termination
  545. *
  546. RETURN
  547. *
  548. * Format handling
  549. *
  550. 184 FORMAT (2X,'noeud ip=',i4,' relie aux elements')
  551. 185 FORMAT (/2X,10(A16,'=',I8,2X)/)
  552. 186 FORMAT (2X,10(A6,'=',I6,2X))
  553. 187 FORMAT (5X,10I8)
  554. 188 FORMAT (5X,10(1X,1PG12.5))
  555. *
  556. * Error handling
  557. *
  558. * Point de branchement si erreur pendant le bloc en numérotation
  559. * locale
  560. * Il faut rétablir la numérotation globale
  561. 555 CONTINUE
  562. NBPTS=IBPTS
  563. MCOORD=ICOORD
  564. RETURN
  565. *
  566. 9999 CONTINUE
  567. MOTERR(1:8)='OPTO1 '
  568. * 349 2
  569. *Problème non prévu dans le s.p. %m1:8 contactez votre assistance
  570. CALL ERREUR(349)
  571. RETURN
  572. *
  573. * End of subroutine OPTO1
  574. *
  575. END
  576.  
  577.  

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