Télécharger accro3.eso

Retour à la liste

Numérotation des lignes :

accro3
  1. C ACCRO3 SOURCE OF166741 25/07/28 21:15:02 12336
  2. SUBROUTINE ACCRO3
  3. C========================================================================
  4. C Cree la matrice de liaison entre le champ u et w
  5. C avec une formulation forte => On utilise les fonctions de forme
  6. C et on identifie le deplacement aux noeuds de la fissure
  7. c
  8. c On prend en compte les enrichissements XFEM
  9. c
  10. C Creation : BP, decembre 2012
  11. C Modifications : ...
  12. C
  13. C========================================================================
  14.  
  15. IMPLICIT INTEGER(I-N)
  16. IMPLICIT REAL*8 (A-H,O-Z)
  17.  
  18. -INC PPARAM
  19. -INC CCOPTIO
  20. -INC CCREEL
  21. -INC CCHAMP
  22. -INC CCGEOME
  23.  
  24. -INC SMCOORD
  25. -INC SMELEME
  26. -INC SMRIGID
  27. -INC SMLMOTS
  28. -INC SMMODEL
  29. -INC SMINTE
  30. -INC SMCHAML
  31. -INC SMLREEL
  32.  
  33. C Segment contenant les informations sur un element
  34. SEGMENT INFO
  35. INTEGER INFELL(JG)
  36. ENDSEGMENT
  37.  
  38. POINTEUR INFO1.INFO,INFO2.INFO
  39. POINTEUR MCHEX1.MCHELM
  40. external shape
  41. DATA EPSI/1.D-9/
  42. DIMENSION ICOR(6),IMEL(6),imtt(10)
  43. DIMENSION qsi(3),XPO(3)
  44.  
  45. C INITIALISATION DES INCONNUES obligatoires et facultatives
  46. PARAMETER (NOBL=3,NFAC=9)
  47. CHARACTER*4 DDLOBL(NOBL),DDLFAC(NFAC),MODDL,MODDL2
  48. CHARACTER*4 DUAOBL(NOBL),DUAFAC(NFAC)
  49.  
  50. DATA DDLOBL/'UX ','UY ','UZ '/
  51. DATA DDLFAC/'AX ','AY ','AZ ',
  52. >'B1X ','B1Y ','B1Z ',
  53. >'B2X ','B2Y ','B2Z '/
  54. DATA DUAOBL/'FX ','FY ','FZ '/
  55. DATA DUAFAC/'FAX ','FAY ','FAZ ',
  56. >'FB1X','FB1Y','FB1Z',
  57. >'FB2X','FB2Y','FB2Z'/
  58.  
  59.  
  60. c-----------------------------------------------------
  61. c Segment de travail
  62. c-----------------------------------------------------
  63. SEGMENT MTRAV
  64. REAL*8 XE2(3,NBNN2)
  65. REAL*8 SHPP1(6,NBNN1)
  66. REAL*8 XE1(3,NBNN1)
  67. INTEGER IDEJVU(NBPTS)
  68. ENDSEGMENT
  69.  
  70. c tableaux comptant le nbre d EF de chaque ddl
  71. PARAMETER(NDDLMAX=6)
  72. INTEGER NELDDL(NDDLMAX)
  73.  
  74. if(iimpi.ge.2) then
  75. write(ioimp,*) '-----------------------------------------------'
  76. write(ioimp,*) ' ENTREE dans ACCRO3'
  77. write(ioimp,*) '-----------------------------------------------'
  78. endif
  79.  
  80. c Preliminaires
  81. idim1 = idim + 1
  82. SEGACT,MCOORD*mod
  83.  
  84. c-----------------------------------------------------
  85. c RECUPERATION DU MAILLAGE MASSIF
  86. c-----------------------------------------------------
  87. CALL LIROBJ('MMODEL ',IPMODL,1,IRETOU)
  88. CALL ACTOBJ('MMODEL ',IPMODL,1)
  89. IF(IERR.NE.0) RETURN
  90. MMODE1=IPMODL
  91. segact,MMODE1
  92. c Récupération du nombre de zones du modèle
  93. N1 = MMODE1.KMODEL(/1)
  94. if(N1.gt.1) write(ioimp,*) 'attention 1 seule zone a ce jour!'
  95. IMODE1 = MMODE1.KMODEL(1)
  96. segdes,MMODE1
  97. C Récupération du maillage et du numéro d'élément du modèle
  98. segact,IMODE1
  99. nele1 = IMODE1.NEFMOD
  100. IPT1 = IMODE1.IMAMOD
  101. SEGACT IPT1
  102. C Récupération du numéro d'élément du maillage, du nombre de noeuds et d'éléments
  103. iele1 = IPT1.itypel
  104. nbnn1 = IPT1.num(/1)
  105. nbel1 = IPT1.num(/2)
  106. c récupération des caractéristique EF IPT1
  107. call elquoi(nele1,0,3,IPTR1,IMODE1)
  108. segdes,IMODE1
  109. INFO = IPTR1
  110. segact,INFO
  111. mele1 = INFELL(1)
  112. MINTE1 = INFELL(11)
  113. segdes,INFO
  114.  
  115. c-----------------------------------------------------
  116. c RECUPERATION DU MAILLAGE INTERFACE
  117. c-----------------------------------------------------
  118. IPMAI2 = 0
  119. CALL LIROBJ('MMODEL ',IPMODL,0,IRETOU)
  120. IF(IERR.NE.0) RETURN
  121. if (IRETOU.EQ.1)then
  122. CALL ACTOBJ('MMODEL ',IPMODL,1)
  123. MMODE2=IPMODL
  124. segact,MMODE2
  125. N2 = MMODE2.KMODEL(/1)
  126. if(N2.gt.1) write(ioimp,*) 'attention 1 seule zone a ce jour!'
  127. IMODE2 = MMODE2.KMODEL(1)
  128. segdes,MMODE2
  129. segact,IMODE2
  130. nele2 = IMODE2.NEFMOD
  131. IPT2 = IMODE2.IMAMOD
  132. SEGACT IPT2
  133. c pour l'instant on dit que nele = iele (marche pour iele entre 2 et 26, voir bdata.eso)
  134. iele2 = IPT2.itypel
  135. nbnn2 = IPT2.num(/1)
  136. nbel2 = IPT2.num(/2)
  137.  
  138. c recuperation des caracteritiques de l'element
  139. c write(ioimp,*) 'appel elquoi',iele2,nele2
  140. call elquoi(nele2,0,3,IPTR2,IMODE2)
  141. 1 segdes,IMODE2
  142. INFO = IPTR2
  143. segact,INFO
  144. MINTE2 = INFELL(11)
  145. ngau2 = INFELL(6)
  146. segdes,INFO
  147. else
  148. C Dans le cas où on a un maillage en entrée
  149. CALL LIROBJ('MAILLAGE',IPMAI2,1,IRETOU)
  150. IF(IERR.NE.0) RETURN
  151. IPT2 = IPMAI2
  152. SEGACT IPT2
  153. c pour l'instant on dit que nele = iele (marche pour iele entre 2 et 26, voir bdata.eso)
  154. iele2 = IPT2.itypel
  155. nele2 = iele2
  156. if (nele2.lt.2.or.nele2.gt.26) then
  157. write(ioimp,*)'element geometrique different de l element fini'
  158. call erreur(16)
  159. endif
  160. nbnn2 = IPT2.num(/1)
  161. nbel2 = IPT2.num(/2)
  162. c SEG2
  163. if (nele2.EQ.2) ngau2 = 2
  164. c SEG3
  165. if (nele2.EQ.3) ngau2 = 3
  166. c TRI3
  167. if (nele2.EQ.4) ngau2 = 1
  168. c TRI6
  169. if (nele2.EQ.6) ngau2 = 4
  170. c QUA4
  171. if (nele2.EQ.8) ngau2 = 4
  172. c QUA8
  173. if (nele2.EQ.10) ngau2 = 9
  174. endif
  175.  
  176. call RESHPT(ngau2,nbnn2,iele2,nele2,0,IPTR2,IRET)
  177. MINTE2 = IPTR2
  178. segact,MINTE1,MINTE2
  179.  
  180.  
  181. c-----------------------------------------------------
  182. c RECHERCHE DU MCHAML ISSU MCHEX1 D ENRICHISSEMENT
  183. c-----------------------------------------------------
  184. MCHAM1=0
  185. NBENR2=0
  186. segact,IMODE1
  187. NOBMOD = IMODE1.IVAMOD(/1)
  188. IF (NOBMOD.NE.0) THEN
  189. DO 1002 iobmo1=1,NOBMOD
  190. if((IMODE1.TYMODE(iobmo1)).ne.'MCHAML') goto 1002
  191. MCHEX1 = IMODE1.IVAMOD(iobmo1)
  192. segact,MCHEX1
  193. if((MCHEX1.TITCHE).ne.'ENRICHIS') goto 1003
  194. MCHAM1 = MCHEX1.ICHAML(1)
  195. segact,MCHAM1
  196. NBENR2 = MCHAM1.IELVAL(/1)
  197. do ienr2=1,NBENR2
  198. MELVA1=MCHAM1.IELVAL(IENR2)
  199. if(MELVA1.ne.0) segact,MELVA1
  200. enddo
  201. 1003 continue
  202. segdes,MCHEX1
  203. 1002 CONTINUE
  204. ENDIF
  205.  
  206. c-------------------------------------
  207. c INITIALISATION DES OBJETS DE TRAVAIL : MTRAV et ITYMAT
  208. c-------------------------------------
  209. segini,MTRAV
  210. *bp : NTYMAT = (U ou H ou HB1 ou HB1B2)
  211. * nbre de types de matrices = NRIGEL = NTYMAT * idim
  212. c NTYMAT = 4
  213. NTYMAT = 1+NBENR2
  214.  
  215. c-------------------------------------
  216. c INITIALISATION DU MCOORD
  217. c-------------------------------------
  218. NBPTS0 = NBPTS
  219. NBPTS = NBPTS0 + ((nbel2 + 1)*idim*3)
  220. SEGADJ,MCOORD
  221. NBPTS = NBPTS0
  222. * on compte le vrai nombre de LX ajouté via NBPTS
  223.  
  224. c--------------------------------------------------------------------
  225. c INITIALISATION DU SEGMENT MRIGID
  226. c--------------------------------------------------------------------
  227. NRIGEL = NTYMAT*idim
  228. segini,MRIGID
  229. IFORIG = IFOUR
  230. MTYMAT ='RIGIDITE'
  231. c -on prepare le meleme
  232. NBSOUS = 0
  233. NBREF = 0
  234.  
  235. ityty=0
  236. c on initialise la taille matrice en fonction du type de matrice
  237. do ity=1,NTYMAT
  238. do iidim=1,idim
  239.  
  240. ityty=ityty+1
  241. COERIG(ityty) = 1.D0
  242.  
  243. * dim de la matrice RE elementaire
  244. * = 1 (LX) + 1 (UX) + nbnoeud (UX)
  245. * = 1 (LX) + 1 (AX) + nbnoeud (AX)
  246. * = 1 (LX) + 1 (AX) + 2*nbnoeud (AX+B1X)
  247. * = 1 (LX) + 1 (AX) + 3*nbnoeud (AX+B1X+B2X)
  248. nbno1 = nbnn1
  249. nenr1 = ity
  250. if(nenr1.le.2) then
  251. NLIGRP = 1 + 1 + nbno1
  252. else
  253. NLIGRP = 1 + 1 + ((nenr1-1)*nbno1)
  254. endif
  255. NLIGRD = NLIGRP
  256.  
  257. c -creation du MELEME
  258. NBNN = 2 + nbno1
  259. NBELEM=0
  260. SEGINI,MELEME
  261. c ITYPEL=28
  262. ITYPEL=22
  263. IRIGEL(1,ityty) = MELEME
  264.  
  265. c -remplissage du DESCR
  266. SEGINI,DESCR
  267. IRIGEL(3,ityty) = DESCR
  268. iddl=0
  269. c remplissage des ddl LX de la fissure
  270. iddl=iddl+1
  271. LISINC(iddl)='LX'
  272. LISDUA(iddl)='FLX'
  273. NOELEP(iddl)=1
  274. NOELED(iddl)=1
  275. c remplissage des ddl UX de la fissure (ici appelé WX) []*WX=TX
  276. iddl=iddl+1
  277. if (nenr1.eq.1) then
  278. LISINC(iddl)=DDLOBL(iidim)
  279. LISDUA(iddl)=DUAOBL(iidim)
  280. else
  281. LISINC(iddl)=DDLFAC(iidim)
  282. LISDUA(iddl)=DUAFAC(iidim)
  283. endif
  284. NOELEP(iddl)=2
  285. NOELED(iddl)=2
  286. c remplissage des ddl de la structure
  287. if (nenr1.eq.1) then
  288. do ino1=1,nbno1
  289. iddl=iddl+1
  290. LISINC(iddl)=DDLOBL(iidim)
  291. LISDUA(iddl)=DUAOBL(iidim)
  292. NOELEP(iddl)=2+ino1
  293. NOELED(iddl)=2+ino1
  294. enddo
  295. else
  296. do ini1=1,(nenr1-1)
  297. do ino1=1,nbno1
  298. iddl=iddl+1
  299. LISINC(iddl)=DDLFAC(iidim+(3*(ini1-1)))
  300. LISDUA(iddl)=DUAFAC(iidim+(3*(ini1-1)))
  301. NOELEP(iddl)=2+ino1
  302. NOELED(iddl)=2+ino1
  303. enddo
  304. enddo
  305. endif
  306. if(iimpi.ge.3) write(ioimp,*) ityty,(LISINC(iou),iou=1,NLIGRP)
  307. if(iimpi.ge.3) write(ioimp,*) ityty,(NOELEP(iou),iou=1,NLIGRP)
  308. SEGDES,DESCR
  309.  
  310. c -initialisation du XMATRI
  311. NELRIG=0
  312. SEGINI,XMATRI
  313. IRIGEL(4,ityty) = XMATRI
  314. IRIGEL(5,ityty) = NIFOUR
  315. IRIGEL(6,ityty) = 0
  316. IRIGEL(7,ityty) = 0
  317. IRIGEL(8,ityty) = 0
  318.  
  319. enddo
  320. enddo
  321.  
  322.  
  323. c----------------------------------------------------------------------
  324. c 1. RECHERCHE DES ELEMENTS DE STRUCTURE CONTENANT DES POINTS DE GAUSS
  325. c DES ELEMENTS DE LA FISSURE
  326. c 2. REMPLISSAGE DU MRIGID (XMATRI et MELEME)
  327. c----------------------------------------------------------------------
  328. iaccro=0
  329. NODES=0
  330. C
  331. c==== Boucle sur les elements de fissure ==============================
  332. DO 1100 iem2=1,nbel2
  333.  
  334. call doxe(xcoor,idim,nbnn2,ipt2.num,iem2,xe2)
  335. nbenrj = 0
  336.  
  337. c======= Boucle sur les noeuds de fissure ============================
  338. DO 1132 ino2=1,nbnn2
  339.  
  340. c on n'attache qu'une seule fois chaque noeud
  341. inode2 = IPT2.NUM(ino2,iem2)
  342. if(IDEJVU(inode2).ne.0) goto 1132
  343. IDEJVU(inode2)=1
  344. NODES=NODES+1
  345.  
  346. c récupération des coordonnees du point de gauss dans le repère global
  347. XPO(1) = xe2(1,ino2)
  348. XPO(2) = xe2(2,ino2)
  349. XPO(3) = xe2(3,ino2)
  350.  
  351. c---------- Boucle sur les elements de structure ----------------------
  352. DO 1131 iem1=1,nbel1
  353.  
  354. c si pas d'enrichissement, on travaille sur tous les elements
  355. if(MCHAM1.eq.0) goto 1133
  356. c on saute les elements non enrichi car a priori ne contiennent pas la fissure
  357. do ienr2=1,NBENR2
  358. MELVA1=MCHAM1.IELVAL(IENR2)
  359. if(MELVA1.ne.0) then
  360. do inode1=1,nbnn1
  361. if(MELVA1.IELCHE(inode1,iem1).ne.0) goto 1133
  362. enddo
  363. endif
  364. enddo
  365. goto 1131
  366. 1133 continue
  367.  
  368. c recuperation des coordonnées des noeuds de IPT1 : xe1 (dans le repère x,y,z)
  369. call doxe(xcoor,idim,nbnn1,ipt1.num,iem1,xe1)
  370.  
  371. qsi(1) = 0.D0
  372. qsi(2) = 0.D0
  373. qsi(3) = 0.D0
  374. c calcul des fonctions de formes de IPT1 au pt de Gauss de IPT2
  375. call QSIJS(xe1,iele1,nbnn1,idim,XPO,SHPP1,qsi,IRET)
  376.  
  377. c test pour savoir si PG est dans EF de IPT1
  378. DO ino1=1,NBNN1
  379. if (SHPP1(1,ino1).LT.-1.01D-7) then
  380. go to 1131
  381. endif
  382. ENDDO
  383. c ON a trouvé : l'iem1 élément de structure contient ce noeud de fissure
  384. IDEJVU(inode2)=10
  385. iaccro=iaccro+1
  386.  
  387. c DETECTION DU TYPE D'ENRICHISSEMENT MAX DE CET ELEMENT = nbenrj
  388. DO 3001 IENR2=1,NBENR2
  389. MELVA1=MCHAM1.IELVAL(IENR2)
  390. IF(MELVA1.eq.0) GOTO 3001
  391. DO 3002 ino1=1,nbnn1
  392. MLREEL = MELVA1.IELCHE(ino1,iem1)
  393. c Test pour savoir si le noeud est enrichi
  394. IF(MLREEL.eq.0) GOTO 3002
  395. nbenrj=max(nbenrj,IENR2)
  396. 3002 continue
  397. 3001 continue
  398.  
  399. if(iimpi.ge.3) write(ioimp,*) 'EF fissure ',iem2,
  400. & ' ptdeG ',ino2,' -> EF MASSIF ',iem1,' nbenrj=',nbenrj
  401.  
  402.  
  403. c Remplissage du MRIGID
  404.  
  405. c ---Boucle sur la Partie standard et enrichie ---
  406. do 6000 ity=1,min(2,NTYMAT)
  407. c ---Boucle sur la dimension ---
  408. c rem : utile uniquement pour le meleme
  409. c (on pourrait garder le meme xmatri pour les differents iidim)
  410. do 6001 iidim=1,idim
  411.  
  412. if(ity.eq.1) then
  413. ityty = iidim
  414. else
  415. ityty = (nbenrj*idim) + iidim
  416. endif
  417. MELEME = IRIGEL(1,ityty)
  418. XMATRI = IRIGEL(4,ityty)
  419. NBELEM = NUM(/2)+1
  420. NLIGRD = RE(/1)
  421. NLIGRP = RE(/2)
  422. NELRIG = RE(/3)+1
  423. segadj,MELEME
  424. segadj,XMATRI
  425.  
  426. c Remplissage du MELEME
  427. c traitement du LX
  428. NBPTS = NBPTS + 1
  429. if(NBPTS.gt.(XCOOR(/1)/idim1)) then
  430. NBPTS0 = NBPTS
  431. NBPTS = NBPTS0 + (nbel2 + 1)
  432. SEGADJ,MCOORD
  433. NBPTS = NBPTS0
  434. endif
  435. NUM(1,NBELEM) = NBPTS
  436. XCOOR((NBPTS-1)*idim1 +1) = XCOOR((inode2-1)*idim1 +1)
  437. XCOOR((NBPTS-1)*idim1 +2) = XCOOR((inode2-1)*idim1 +2)
  438. if(idim.eq.3)
  439. & XCOOR((NBPTS-1)*idim1 +3) = XCOOR((inode2-1)*idim1 +3)
  440. c traitement du noeud de la fissure
  441. NUM(2,NBELEM) = inode2
  442. c traitement des noeuds de la structure
  443. inono=2
  444. cbp inutile do j2=1,max(1,nbenrj)
  445. cbp inutile car noelep boucle deja sur les enrichissement
  446. do ino1=1,nbnn1
  447. inono=inono+1
  448. NUM(inono,NBELEM) = IPT1.NUM(ino1,iem1)
  449. enddo
  450. c enddo
  451.  
  452. c Remplissage du XMATRI
  453. c traitement du terme LX - ddl fissure
  454. RE(1,2,NELRIG)=1.d0
  455. RE(2,1,NELRIG)=1.d0
  456. c traitement des terme LX - ddl structure
  457. inono=2
  458. c UX = UX seulement
  459. if(ity.eq.1) then
  460. do ino1=1,nbnn1
  461. inono=inono+1
  462. RE(1,inono,NELRIG)=-1.d0*SHPP1(1,ino1)
  463. RE(inono,1,NELRIG)=-1.d0*SHPP1(1,ino1)
  464. enddo
  465. else
  466. c AX = AX ...
  467. if(nbenrj.ge.1) then
  468. MELVA1 = MCHAM1.IELVAL(1)
  469. do ino1=1,nbnn1
  470. MLREEL = MELVA1.IELCHE(ino1,iem1)
  471. inono=inono+1
  472. if(MLREEL.ne.0) then
  473. RE(1,inono,NELRIG)=-1.d0*SHPP1(1,ino1)
  474. RE(inono,1,NELRIG)=-1.d0*SHPP1(1,ino1)
  475. endif
  476. enddo
  477. endif
  478. c ... + B1X + B2X
  479. if(nbenrj.ge.2) then
  480. do jenrj=2,nbenrj
  481. c on ecrit B1X pour les nbnn1 noeuds, puis B2X ...
  482. MELVA1 = MCHAM1.IELVAL(jenrj)
  483. do ino1=1,nbnn1
  484. MLREEL = MELVA1.IELCHE(ino1,iem1)
  485. if(MLREEL.eq.0) then
  486. c pas d'enrichissement => on met 0
  487. RX05 = 0.d0
  488. else
  489. SEGACT,MLREEL
  490. PSIX = 0.d0
  491. do iii0 = 1,nbnn1
  492. PSIX = PSIX + (SHPP1(1,iii0) * PROG(iii0))
  493. enddo
  494. SEGDES,MLREEL
  495. RX05= -1.d0*SQRT(ABS(PSIX))
  496. endif
  497. inono=inono+1
  498. RE(1,inono,NELRIG)=RX05*SHPP1(1,ino1)
  499. RE(inono,1,NELRIG)=RX05*SHPP1(1,ino1)
  500. enddo
  501. enddo
  502. endif
  503. endif
  504.  
  505. 6001 continue
  506. 6000 continue
  507. c ---fin de Boucle sur les XMATRI et MELEME
  508. c des Partie standard et enrichie et sur les dimensions ---
  509.  
  510. c on a trouvé le iem1 élément et on a fait le travail :
  511. c on passe au point de gauss suivant
  512. goto 1132
  513.  
  514. 1131 CONTINUE
  515. c---------- fin de la Boucle sur les elements de structure -------------
  516. if(iimpi.ge.2) write(ioimp,*)
  517. 1 'Fin de la boucle sur les elements de structure'
  518.  
  519. if(IDEJVU(inode2).ne.10) then
  520. write(ioimp,*) 'Attention le noeud ',inode2,' est hors support'
  521. endif
  522.  
  523. 1132 CONTINUE
  524. c======= fin de la Boucle sur les noeuds de fissure ===================
  525.  
  526. 1100 CONTINUE
  527. c==== fin de la Boucle sur les elements de fissure =====================
  528.  
  529. c MESSAGE : Nombre de points accrochés %i1 sur %i2 proposés
  530. INTERR(1)=iaccro
  531. INTERR(2)=NODES
  532. CALL ERREUR(-319)
  533.  
  534. c------------------------------------
  535. c AJUSTEMENT AVANT DE QUITTER
  536. c------------------------------------
  537.  
  538. if(iimpi.ge.2) write(ioimp,*) 'AJUSTEMENT AVANT DE QUITTER'
  539. c NBPTS est deja le vrai nomber de noeuds
  540. SEGADJ,MCOORD
  541.  
  542. C BOUCLE SUR LES SOUS RIGIDITÉS
  543. ityok = 0
  544. DO 2000 ityty=1,(idim*NTYMAT)
  545. MELEME = IRIGEL(1,ityty)
  546. DESCR = IRIGEL(3,ityty)
  547. XMATRI = IRIGEL(4,ityty)
  548. NBELEM = NUM(/2)
  549. if(NBELEM.ne.0) then
  550. ityok = ityok + 1
  551. IRIGEL(1,ityok) = MELEME
  552. IRIGEL(3,ityok) = DESCR
  553. IRIGEL(4,ityok) = XMATRI
  554. segdes,MELEME,XMATRI
  555. else
  556. segsup,MELEME,DESCR,XMATRI
  557. endif
  558. 2000 continue
  559. NRIGEL = ityok
  560. segadj,MRIGID
  561.  
  562. c-------------------------------
  563. c MENAGE AVANT DE QUITTER
  564. c-------------------------------
  565. segsup,MTRAV
  566. segdes IPT1,IPT2
  567. if(MCHAM1.ne.0) segdes,MCHAM1
  568. SEGDES,MRIGID
  569.  
  570. if(iimpi.ge.3) write(ioimp,*) 'ecriture du MRIGID',MRIGID
  571. CALL ECROBJ('RIGIDITE',MRIGID)
  572.  
  573. END
  574.  
  575.  
  576.  

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