Télécharger elas1.eso

Retour à la liste

Numérotation des lignes :

elas1
  1. C ELAS1 SOURCE OF166741 24/05/02 21:15:03 11927
  2.  
  3. SUBROUTINE ELAS1(IPMODL,IPCHE1,IPCHE2,IPCHE3,IPSTRS,IRET)
  4.  
  5. C_______________________________________________________________________
  6. C
  7. C operateur elasticite
  8. C
  9. C entrees :
  10. C ---------
  11. C
  12. C ipmodl pointeur sur un mmodel
  13. C ipche1 pointeur sur un mchaml de contraintes ou de deformations
  14. C ipche2 pointeur sur un mchaml de materiau
  15. C ipche3 pointeur sur un mchaml de variables internes(facultatif)
  16. C
  17. C sortie :
  18. C --------
  19. C
  20. C ipstrs pointeur sur un mchaml de contraintes ou de deformations
  21. C iret =1 ou 0 suivant succes ou pas
  22. C
  23. C passage aux nouveaux chamelem par jm campenon le 01/91
  24. C_______________________________________________________________________
  25. C
  26. IMPLICIT INTEGER(I-N)
  27. IMPLICIT REAL*8(A-H,O-Z)
  28.  
  29. -INC PPARAM
  30. -INC CCOPTIO
  31. -INC CCHAMP
  32. -INC CCREEL
  33.  
  34. -INC SMINTE
  35. -INC SMMODEL
  36. -INC SMELEME
  37. -INC SMCHAML
  38. -INC SMCOORD
  39. -INC SMLREEL
  40.  
  41. C_______________________________________________________________________
  42. C la variable kerre regit les impressions d erreurs dans elas1
  43. C
  44. C kerre=0 tout ok
  45. C =49 matrice de hooke singuliere
  46. C_______________________________________________________________________
  47. C
  48. SEGMENT IWRK1
  49. REAL*8 VALCAR(NCARRw),VALMAT(NMATT),VAR(NVART)
  50. REAL*8 SIGF(NSTRS),EPSI(NSTRS)
  51. REAL*8 DDHOOK(LHOOK,LHOOK),DDHOMU(LHOOK,LHOOK)
  52. REAL*8 COBMA(LHOOK)
  53. ENDSEGMENT
  54. C
  55. SEGMENT WPOUT
  56. REAL*8 SIG1(NSTRS),SIG2(NSTRS)
  57. ENDSEGMENT
  58. C
  59. SEGMENT IWRK2
  60. REAL*8 XE(3,NBNN),TXR(IDIM,IDIM)
  61. REAL*8 XLOC(3,3),XGLOB(3,3)
  62. REAL*8 D1HOOK(LHOOK,LHOOK),ROTHOO(LHOOK,LHOOK)
  63. REAL*8 COBAUX(LHOOK)
  64. ENDSEGMENT
  65. C
  66. SEGMENT IWRK4
  67. REAL*8 VECO1(LHOOK),VECO2(LHOOK)
  68. ENDSEGMENT
  69. C
  70. SEGMENT NOTYPE
  71. CHARACTER*16 TYPE(NBTYPE)
  72. ENDSEGMENT
  73. C
  74. SEGMENT MPTVAL
  75. INTEGER IPOS(NS) ,NSOF(NS)
  76. INTEGER IVAL(NCOSOU)
  77. CHARACTER*16 TYVAL(NCOSOU)
  78. ENDSEGMENT
  79. C
  80. DIMENSION CRIGI(12),CMASS(12),S(20)
  81. CHARACTER*8 CMATE
  82. C CHARACTER*8 PHAM
  83. CHARACTER*(NCONCH) CONM
  84. LOGICAL LSUPDE,LSUPCO,lsupma,lsupca,lsupre,lsupin,lsupva
  85. PARAMETER ( NINF=3 )
  86. PARAMETER(DEUX=2.D0,UNDEMI=.5D0,SIX=6.D0)
  87. PARAMETER(X774=.774596669241483D0)
  88. INTEGER INFOS(NINF)
  89. C
  90. IRET=0
  91. KERRE=0
  92. C
  93. C Verification de l'ordonnancement des MCHAML
  94. C On garde le MCHAML de EPSI/SIGM actif
  95. MCHELM=IPCHE1
  96. IF (TITCHE.EQ.'CARACTERISTIQUES') THEN
  97. IPCHE0=IPCHE2
  98. IPCHE2=IPCHE1
  99. IPCHE1=IPCHE0
  100. MCHELM=IPCHE1
  101. IF (IPCHE3.NE.0) THEN
  102. IF (TITCHE.EQ.'VARIABLES INTERNES') THEN
  103. IPCHE0=IPCHE3
  104. IPCHE3=IPCHE1
  105. IPCHE1=IPCHE0
  106. ENDIF
  107. ENDIF
  108. ELSE IF (TITCHE.EQ.'VARIABLES INTERNES') THEN
  109. IF (IPCHE3.NE.0) THEN
  110. IPCHE0=IPCHE3
  111. IPCHE3=IPCHE1
  112. IPCHE1=IPCHE0
  113. MCHEL2=IPCHE2
  114. IF (MCHEL2.TITCHE.NE.'CARACTERISTIQUES') THEN
  115. IPCHE0=IPCHE2
  116. IPCHE2=IPCHE1
  117. IPCHE1=IPCHE0
  118. ENDIF
  119. ELSE
  120. CC Pas de IPCHE3 mais IPCHE1 = VARINTER !
  121. CC Si IPCHE2 pas CARACT., je permute IPCHE1 & IPCHE2
  122. MCHEL2=IPCHE2
  123. IF (MCHEL2.TITCHE.NE.'CARACTERISTIQUES') THEN
  124. IPCHE0=IPCHE2
  125. IPCHE2=IPCHE1
  126. IPCHE1=IPCHE0
  127. ENDIF
  128. ENDIF
  129. ELSE IF (TITCHE.EQ.'CONTRAINTES'.OR.TITCHE.EQ.'DEFORMATIONS') THEN
  130. IF (IPCHE3.NE.0) THEN
  131. MCHEL2=IPCHE2
  132. IF (MCHEL2.TITCHE.NE.'CARACTERISTIQUES') THEN
  133. IPCHE0=IPCHE2
  134. IPCHE2=IPCHE3
  135. IPCHE3=IPCHE0
  136. ENDIF
  137. ENDIF
  138. ELSE
  139. CC IPCHE1 n'a pas un des sous-types attendus
  140. CC On essaie si on peut avoir ce qu'il faut avec IPCHE3
  141. CC en permuttant eventuellement IPCHE2 et IPCH3
  142. IF (IPCHE3.NE.0) THEN
  143. MCHEL2=IPCHE2
  144. IF (MCHEL2.TITCHE.EQ.'CARACTERISTIQUES') THEN
  145. IPCHE1=IPCHE3
  146. ELSE
  147. MCHEL3=IPCHE3
  148. IF (MCHEL3.TITCHE.EQ.'CARACTERISTIQUES') THEN
  149. IPCHE1=IPCHE2
  150. IPCHE2=IPCHE3
  151. ELSE IF (MCHEL3.TITCHE.NE.'VARIABLES INTERNES') THEN
  152. IPCHE1=IPCHE3
  153. ENDIF
  154. ENDIF
  155. ELSE
  156. IPCHE0=IPCHE2
  157. IPCHE2=IPCHE1
  158. IPCHE1=IPCHE0
  159. ENDIF
  160. ENDIF
  161. C
  162. C Verification du type de IPCHE1 :
  163. C KCAS = 1 ou 2 par la suite !
  164. MCHELM=IPCHE1
  165. IF (TITCHE.EQ.'CONTRAINTES') THEN
  166. KCAS = 2
  167. ELSE IF (TITCHE.EQ.'DEFORMATIONS') THEN
  168. KCAS = 1
  169. ELSE
  170. KCAS = 0
  171. MOTERR(1:24)='CONTRAINTES'
  172. MOTERR(25:48)='DEFORMATIONS'
  173. CALL ERREUR(109)
  174. RETURN
  175. ENDIF
  176. C
  177. C activation du modele
  178. C on cree un second modele ou on ne conserve que les sous-modeles
  179. c d'interet pour la suite. (A detruire a la fin)
  180. C
  181. MMODEL = IPMODL
  182. N1 = MMODEL.KMODEL(/1)
  183. SEGINI,MMODE2
  184. NSOUS = 0
  185. DO ISOUS = 1, N1
  186. IMODEL = MMODEL.KMODEL(ISOUS)
  187. IF (FORMOD(1).EQ.'MECANIQUE' .OR.
  188. & FORMOD(1).EQ.'POREUX' .OR.
  189. & FORMOD(1).EQ.'ELECTROSTATIQUE' .OR.
  190. & FORMOD(1).EQ.'DIFFUSION') THEN
  191. IF ((NEFMOD.NE.22).AND.(NEFMOD.NE.259)) THEN
  192. NSOUS = NSOUS + 1
  193. MMODE2.KMODEL(NSOUS) = IMODEL
  194. ENDIF
  195. ENDIF
  196. ENDDO
  197. N1 = NSOUS
  198. SEGADJ MMODE2
  199. IPMOD2 = MMODE2
  200. IF (NSOUS.LE.0) THEN
  201. CALL ERREUR(-182)
  202. CALL ERREUR(21)
  203. GOTO 9992
  204. ENDIF
  205. C
  206. C Verification du lieu support des mchamls
  207. C
  208. CALL QUESUP(IPMOD2,IPCHE1,5,0,ISUP1,IRET1)
  209. IF (ISUP1.GT.1) RETURN
  210. CALL QUESUP(IPMOD2,IPCHE2,5,0,ISUP2,IRET2)
  211. IF (ISUP2.GT.1) RETURN
  212. IF (IPCHE3.NE.0) THEN
  213. CALL QUESUP(IPMOD2,IPCHE3,5,0,ISUP3,IRET3)
  214. IF (ISUP3.GT.1) RETURN
  215. ENDIF
  216. C
  217. C creation du mchelm
  218. C
  219. N1 = NSOUS
  220. N3=6
  221. IF (KCAS.EQ.1) THEN
  222. L1=11
  223. SEGINI MCHEL1
  224. MCHEL1.TITCHE='CONTRAINTES'
  225. C* ELSE IF (KCAS.EQ.2) THEN
  226. ELSE
  227. L1=12
  228. SEGINI MCHEL1
  229. MCHEL1.TITCHE='DEFORMATIONS'
  230. ENDIF
  231. MCHEL1.IFOCHE=IFOUR
  232. IPSTRS=MCHEL1
  233.  
  234. C- Un petit segment utile :
  235. NBTYPE=1
  236. SEGINI,NOTYPE
  237. TYPE(1)='REAL*8'
  238. MOTYR8 = NOTYPE
  239. C
  240. C_______________________________________________________________________
  241. C
  242. C debut de la boucle sur les differentes sous zones
  243. C_______________________________________________________________________
  244. C Attention on boucle sur les NSOUS sous-modeles de IPMOD2 = MMODE2 !
  245. C SP : IVARES, MCHAM1 : correction fiche 8444
  246. IVARES = 0
  247. MCHAM1 = 0
  248.  
  249. DO 500 ISOUS = 1, NSOUS
  250. C
  251. IMODEL = MMODE2.KMODEL(ISOUS)
  252. C
  253. C traitement du modele
  254. C
  255. lsupma=.true.
  256. lsupva=.true.
  257. NMATR=0
  258. NMATF=0
  259. NCARA=0
  260. NCARF=0
  261. NVART=0
  262. MORES=0
  263. NRES=0
  264. IVAMAT=0
  265. IVACAR=0
  266. IVARI=0
  267. MOMATR=0
  268. MOCARA=0
  269. MOVARI=0
  270. C
  271. C on recupere l'information generale
  272. C
  273. MELE =NEFMOD
  274. IPMAIL=IMAMOD
  275. CONM =CONMOD
  276. C PHAM = conmod(17:24)
  277. C
  278. C creation du tableau infos
  279. C
  280. CALL IDENT(IPMAIL,CONM,IPCHE1,IPCHE2,INFOS,IRTD)
  281. IF (IRTD.EQ.0) GOTO 9991
  282. C
  283. MELEME=IPMAIL
  284. NBNN=NUM(/1)
  285. NBELEM=NUM(/2)
  286. C
  287. C coque integree ou pas
  288. C
  289. IF(INFMOD(/1).NE.0) THEN
  290. NPINT=INFMOD(1)
  291. ELSE
  292. NPINT=0
  293. ENDIF
  294. C
  295. C information sur l'element fini
  296. C
  297. MFR =INFELE(13)
  298. NBPGAU=INFELE(6)
  299. IF ((MELE.EQ.29.OR.MFR.EQ.13).
  300. 1 AND.NBPGAU.NE.1.AND.NBPGAU.NE.2) THEN
  301. CALL ERREUR(712)
  302. GOTO 9991
  303. ENDIF
  304. NSTRS=INFELE(16)
  305. LHOOK=INFELE(10)
  306. IPORE=INFELE(8)
  307. IPPORE=0
  308. NBNO=NBNN
  309. IF(MFR.EQ.33.OR.MFR.EQ.57.OR.MFR.EQ.59) THEN
  310. IPPORE=NBNN
  311. NBNO=IPORE
  312. ENDIF
  313. C
  314. C cas des dkt integres
  315. C
  316. IF (MFR.EQ.3.AND.NPINT.NE.0) LHOOK=4
  317. C
  318. C LHOO2=LHOOK*LHOOK
  319. C MINTE=INFELE(11)
  320. minte=infmod(7)
  321. IPMINT=MINTE
  322. C
  323. C nature du materiau
  324. C
  325. CMATE = CMATEE
  326. MATE = IMATEE
  327. INAT = INATUU
  328. C* IF (CMATE.EQ.' ') THEN
  329. C* CALL ERREUR(251)
  330. C* GOTO 9991
  331. C* ENDIF
  332. C
  333. MCHEL1.IMACHE(ISOUS)=IPMAIL
  334. MCHEL1.CONCHE(ISOUS)=CONMOD
  335. C
  336. MCHEL1.INFCHE(ISOUS,1)=0
  337. MCHEL1.INFCHE(ISOUS,2)=0
  338. MCHEL1.INFCHE(ISOUS,3)=NIFOUR
  339. MCHEL1.INFCHE(ISOUS,4)=MINTE
  340. MCHEL1.INFCHE(ISOUS,5)=0
  341. MCHEL1.INFCHE(ISOUS,6)=5
  342. C
  343. C recherche du nom des composantes
  344. C
  345. lsupre=.false.
  346. lsupin=.false.
  347. IF(lnomid(5).ne.0) then
  348. nomid=lnomid(5)
  349. nstdef=lesobl(/2)
  350. lsupde=.false.
  351. mosdef=nomid
  352. else
  353. CALL IDDEFO(IMODEL,IFOUR,MOSDEF,NSTDEF,NFADEF)
  354. lsupde=.true.
  355. endif
  356. if(lnomid(4).ne.0) then
  357. nomid=lnomid(4)
  358. mostr=nomid
  359. nst=lesobl(/2)
  360. nfac=lesfac(/2)
  361. lsupco=.false.
  362. else
  363. lsupco=.true.
  364. CALL IDCONT(IMODEL,IFOUR,MOstr,Nst,NFAC)
  365. endif
  366. IF (KCAS.EQ.1) THEN
  367. MOSTRS=MOSDEF
  368. NSTR=NSTDEF
  369. lsupin=lsupde
  370. mores = mostr
  371. nres=nst
  372. lsupre=lsupco
  373. C* ELSE IF (KCAS.EQ.2) THEN
  374. ELSE
  375. lsupin=lsupco
  376. MOSTRS=MOSTR
  377. NSTR=NST
  378. MORES=MOSDEF
  379. NRES=NSTDEF
  380. lsupre=lsupde
  381. ENDIF
  382. C
  383. C verification de leur presence
  384. C
  385. MOTYPE=MOTYR8
  386. CALL KOMCHA(IPCHE1,IPMAIL,CONM,MOSTRS,MOTYPE,1,INFOS,3,IVASTR)
  387. IF (IERR.NE.0) THEN
  388. NRES=0
  389. ISUP1 = 0
  390. GOTO 9990
  391. ENDIF
  392. C
  393. IF(ISUP1.EQ.1)CALL VALCHE(IVASTR,NSTR,IPMINT,IPPORE,
  394. & MOSTRS,MELE)
  395. C
  396. C recherche de la taille des melval a allouer
  397. C
  398. N1PTEL=NBPGAU
  399. N1EL =NBELEM
  400. NBPTEL=N1PTEL
  401. N2PTEL=0
  402. N2EL =0
  403. C
  404. C creation du mchaml de la sous zone
  405. C
  406. call oooprl(1)
  407. N2=NRES
  408. SEGINI MCHAM1
  409. MCHEL1.ICHAML(ISOUS)=MCHAM1
  410. NS=1
  411. NCOSOU=NRES
  412. SEGINI MPTVAL
  413. IVARES=MPTVAL
  414. NOMID=MORES
  415. DO ICOMP=1,NRES
  416. MCHAM1.NOMCHE(ICOMP)=LESOBL(ICOMP)
  417. MCHAM1.TYPCHE(ICOMP)='REAL*8'
  418. SEGINI MELVA1
  419. MCHAM1.IELVAL(ICOMP)=MELVA1
  420. IVAL(ICOMP)=MELVA1
  421. ENDDO
  422. call oooprl(0)
  423. C
  424. C traitement des champs de materiau
  425. C
  426. NOMID=0
  427. NBROBL=0
  428. NBRFAC=0
  429. IF (FORMOD(1).EQ.'MECANIQUE') THEN
  430. C* IF (CMATE.EQ.'ISOTROPE') THEN
  431. IF (MATE.EQ.1) THEN
  432. IF(INAT.EQ.26.AND.IPCHE3.NE.0) THEN
  433. NBROBL=3
  434. NBRFAC=0
  435. SEGINI NOMID
  436. LESOBL(1)='YOUN'
  437. LESOBL(2)='NU '
  438. LESOBL(3)='DC '
  439. ELSEIF(INAT.EQ.62) THEN
  440. NBROBL=4
  441. NBRFAC=0
  442. SEGINI NOMID
  443. LESOBL(1)='YOUN'
  444. LESOBL(2)='NU '
  445. LESOBL(3)='F'
  446. LESOBL(4)='FC'
  447. ELSE
  448. NBROBL=2
  449. NBRFAC=0
  450. SEGINI NOMID
  451. IF (MFR.EQ.35) THEN
  452. LESOBL(1)='KS '
  453. LESOBL(2)='KN '
  454. ELSE
  455. LESOBL(1)='YOUN'
  456. LESOBL(2)='NU '
  457. ENDIF
  458. ENDIF
  459. C* ELSEIF (CMATE.EQ.'ORTHOTRO') THEN
  460. ELSEIF (MATE.EQ.2) THEN
  461. IF (MFR.EQ.75) THEN
  462. C
  463. C JOINT UNIDIMENSIONNEL JOI1
  464. C
  465. IF(IDIM.EQ.3)THEN
  466. NBROBL=12
  467. NBRFAC=0
  468. SEGINI NOMID
  469. LESOBL(1)='V1X '
  470. LESOBL(2)='V1Y '
  471. LESOBL(3)='V1Z '
  472. LESOBL(4)='V2X '
  473. LESOBL(5)='V2Y '
  474. LESOBL(6)='V2Z '
  475. LESOBL(7)='KN '
  476. LESOBL(8)='KS1 '
  477. LESOBL(9)='KS2'
  478. LESOBL(10)='QN '
  479. LESOBL(11)='QS1 '
  480. LESOBL(12)='QS2 '
  481. C
  482. ELSE IF(IDIM.EQ.2)THEN
  483. NBROBL=5
  484. NBRFAC=0
  485. SEGINI NOMID
  486. LESOBL(1)='V1X '
  487. LESOBL(2)='V1Y '
  488. LESOBL(3)='KN '
  489. LESOBL(4)='KS '
  490. LESOBL(5)='QS'
  491. ENDIF
  492. C
  493. ELSE IF (MFR.EQ.3) THEN
  494. C coques minces
  495. NBROBL=6
  496. NBRFAC=0
  497. SEGINI NOMID
  498. LESOBL(1)='YG1 '
  499. LESOBL(2)='YG2 '
  500. LESOBL(3)='NU12'
  501. LESOBL(4)='G12 '
  502. LESOBL(5)='V1X '
  503. LESOBL(6)='V1Y '
  504. ELSE IF (MFR.EQ.9.OR.MFR.EQ.5) THEN
  505. C coques avec cisaillement transverse
  506. NBROBL=8
  507. NBRFAC=0
  508. SEGINI NOMID
  509. LESOBL(1)='YG1 '
  510. LESOBL(2)='YG2 '
  511. LESOBL(3)='NU12'
  512. LESOBL(4)='G12 '
  513. LESOBL(5)='G23 '
  514. LESOBL(6)='G13 '
  515. LESOBL(7)='V1X '
  516. LESOBL(8)='V1Y '
  517. ELSE IF (MFR.EQ.1.OR.MFR.EQ.31) THEN
  518. C elements massifs
  519. IF(IDIM.EQ.3)THEN
  520. C elements 3d
  521. NBROBL=15
  522. NBRFAC=0
  523. SEGINI NOMID
  524. LESOBL(1)='YG1 '
  525. LESOBL(2)='YG2 '
  526. LESOBL(3)='YG3 '
  527. LESOBL(4)='NU12'
  528. LESOBL(5)='NU23'
  529. LESOBL(6)='NU13'
  530. LESOBL(7)='G12 '
  531. LESOBL(8)='G23 '
  532. LESOBL(9)='G13 '
  533. LESOBL(10)='V1X '
  534. LESOBL(11)='V1Y '
  535. LESOBL(12)='V1Z '
  536. LESOBL(13)='V2X '
  537. LESOBL(14)='V2Y '
  538. LESOBL(15)='V2Z '
  539. ELSE IF (IDIM.EQ.2) THEN
  540. IF(IFOUR.EQ.-2) THEN
  541. C cont. plane
  542. NBROBL=9
  543. NBRFAC=0
  544. SEGINI NOMID
  545. LESOBL(1)='YG1 '
  546. LESOBL(2)='YG2 '
  547. LESOBL(3)='NU12 '
  548. LESOBL(4)='G12'
  549. LESOBL(5)='V1X '
  550. LESOBL(6)='V1Y '
  551. LESOBL(7)='YG3 '
  552. LESOBL(8)='NU23'
  553. LESOBL(9)='NU13'
  554. ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.0.OR.IFOUR.EQ.-3)
  555. $ THEN
  556. C deformation plane ,axisymetrie
  557. NBROBL=9
  558. NBRFAC=0
  559. SEGINI NOMID
  560. LESOBL(1)='YG1 '
  561. LESOBL(2)='YG2 '
  562. LESOBL(3)='YG3 '
  563. LESOBL(4)='NU12'
  564. LESOBL(5)='NU23'
  565. LESOBL(6)='NU13'
  566. LESOBL(7)='G12 '
  567. LESOBL(8)='V1X '
  568. LESOBL(9)='V1Y '
  569. ELSE IF (IFOUR.EQ.1) THEN
  570. C axisymetrie de fourier
  571. NBROBL=11
  572. NBRFAC=0
  573. SEGINI NOMID
  574. LESOBL(1)='YG1 '
  575. LESOBL(2)='YG2 '
  576. LESOBL(3)='YG3 '
  577. LESOBL(4)='NU12'
  578. LESOBL(5)='NU23'
  579. LESOBL(6)='NU13'
  580. LESOBL(7)='G12 '
  581. LESOBL(8)='G23 '
  582. LESOBL(9)='G13 '
  583. LESOBL(10)='V1X '
  584. LESOBL(11)='V1Y '
  585. ENDIF
  586. ELSE IF (IDIM.EQ.1) THEN
  587. NBROBL=6
  588. NBRFAC=0
  589. SEGINI,NOMID
  590. LESOBL(1)='YG1 '
  591. LESOBL(2)='YG2 '
  592. LESOBL(3)='YG3 '
  593. LESOBL(4)='NU12'
  594. LESOBL(5)='NU23'
  595. LESOBL(6)='NU13'
  596. ENDIF
  597. ELSE IF (MFR.EQ.35) THEN
  598. C elements joints
  599. IF (IFOUR.EQ.2) THEN
  600. NBROBL=5
  601. NBRFAC=0
  602. SEGINI NOMID
  603. LESOBL(1)='KS1 '
  604. LESOBL(2)='KS2 '
  605. LESOBL(3)='KN '
  606. LESOBL(4)='V1X '
  607. LESOBL(5)='V1Y '
  608. ENDIF
  609. ENDIF
  610. C* ELSEIF (CMATE.EQ.'ANISOTRO') THEN
  611. ELSEIF (MATE.EQ.3) THEN
  612. C
  613. IF(MFR.EQ.75)THEN
  614. C
  615. C JOINT UNIDIMESIONNEL JOI1
  616. C
  617. IF(IDIM.EQ.3)THEN
  618. NBROBL=27
  619. NBRFAC=0
  620. SEGINI NOMID
  621. LESOBL(1)='V1X '
  622. LESOBL(2)='V1Y '
  623. LESOBL(3)='V1Z '
  624. LESOBL(4)='V2X '
  625. LESOBL(5)='V2Y '
  626. LESOBL(6)='V2Z '
  627. LESOBL(7)='D11 '
  628. LESOBL(8)='D22 '
  629. LESOBL(9)='D33 '
  630. LESOBL(10)='D44 '
  631. LESOBL(11)='D55 '
  632. LESOBL(12)='D66 '
  633. LESOBL(13)='D21 '
  634. LESOBL(14)='D31 '
  635. LESOBL(15)='D32 '
  636. LESOBL(16)='D41 '
  637. LESOBL(17)='D42 '
  638. LESOBL(18)='D43 '
  639. LESOBL(19)='D51 '
  640. LESOBL(20)='D52 '
  641. LESOBL(21)='D53 '
  642. LESOBL(22)='D54 '
  643. LESOBL(23)='D61 '
  644. LESOBL(24)='D62 '
  645. LESOBL(25)='D63 '
  646. LESOBL(26)='D64 '
  647. LESOBL(27)='D65 '
  648. ELSE IF(IDIM.EQ.2)THEN
  649. NBROBL=8
  650. NBRFAC=0
  651. SEGINI NOMID
  652. LESOBL(1)='V1X '
  653. LESOBL(2)='V1Y '
  654. LESOBL(3)='D11 '
  655. LESOBL(4)='D22 '
  656. LESOBL(5)='D33 '
  657. LESOBL(6)='D21 '
  658. LESOBL(7)='D31 '
  659. LESOBL(8)='D32 '
  660. ENDIF
  661. C
  662. ELSE IF (MFR.EQ.1.OR.MFR.EQ.31) THEN
  663. C elements massifs
  664. IF(IDIM.EQ.3)THEN
  665. C elements 3d
  666. IF (IFOUR.EQ.2) THEN
  667. NBROBL=27
  668. NBRFAC=0
  669. SEGINI NOMID
  670. LESOBL(1)='D11 '
  671. LESOBL(2)='D21 '
  672. LESOBL(3)='D22 '
  673. LESOBL(4)='D31 '
  674. LESOBL(5)='D32 '
  675. LESOBL(6)='D33 '
  676. LESOBL(7)='D41 '
  677. LESOBL(8)='D42 '
  678. LESOBL(9)='D43 '
  679. LESOBL(10)='D44 '
  680. LESOBL(11)='D51 '
  681. LESOBL(12)='D52 '
  682. LESOBL(13)='D53 '
  683. LESOBL(14)='D54 '
  684. LESOBL(15)='D55 '
  685. LESOBL(16)='D61 '
  686. LESOBL(17)='D62 '
  687. LESOBL(18)='D63 '
  688. LESOBL(19)='D64 '
  689. LESOBL(20)='D65 '
  690. LESOBL(21)='D66 '
  691. LESOBL(22)='V1X '
  692. LESOBL(23)='V1Y '
  693. LESOBL(24)='V1Z '
  694. LESOBL(25)='V2X '
  695. LESOBL(26)='V2Y '
  696. LESOBL(27)='V2Z '
  697. ENDIF
  698. ELSE IF (IDIM.EQ.2) THEN
  699. IF (IFOUR.EQ.-2) THEN
  700. C contrainte plane
  701. NBROBL=12
  702. NBRFAC=0
  703. C*OF A VOIR !!!! NBROBL=8
  704. C*OF A VOIR !!!! NBRFAC=4
  705. SEGINI NOMID
  706. LESOBL(1)='D11 '
  707. LESOBL(2)='D21 '
  708. LESOBL(3)='D22 '
  709. LESOBL(4)='D41 '
  710. LESOBL(5)='D42 '
  711. LESOBL(6)='D44 '
  712. LESOBL(7)='V1X '
  713. LESOBL(8)='V1Y '
  714. LESOBL(9)='D31 '
  715. LESOBL(10)='D32 '
  716. LESOBL(11)='D33 '
  717. LESOBL(12)='D43 '
  718. ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.0.OR.IFOUR.EQ.-3)
  719. $ THEN
  720. C deformation plane ,axisymetrie
  721. NBROBL=12
  722. NBRFAC=0
  723. SEGINI NOMID
  724. LESOBL(1)='D11 '
  725. LESOBL(2)='D21 '
  726. LESOBL(3)='D22 '
  727. LESOBL(4)='D31 '
  728. LESOBL(5)='D32 '
  729. LESOBL(6)='D33 '
  730. LESOBL(7)='D41 '
  731. LESOBL(8)='D42 '
  732. LESOBL(9)='D43 '
  733. LESOBL(10)='D44 '
  734. LESOBL(11)='V1X '
  735. LESOBL(12)='V1Y '
  736. ELSE IF (IFOUR.EQ.1) THEN
  737. C axisymetrie de fourier
  738. NBROBL=15
  739. NBRFAC=0
  740. SEGINI NOMID
  741. LESOBL(1)='D11 '
  742. LESOBL(2)='D21 '
  743. LESOBL(3)='D22 '
  744. LESOBL(4)='D31 '
  745. LESOBL(5)='D32 '
  746. LESOBL(6)='D33 '
  747. LESOBL(7)='D41 '
  748. LESOBL(8)='D42 '
  749. LESOBL(9)='D43 '
  750. LESOBL(10)='D44 '
  751. LESOBL(11)='D55 '
  752. LESOBL(12)='D65 '
  753. LESOBL(13)='D66 '
  754. LESOBL(14)='V1X '
  755. LESOBL(15)='V1Y '
  756. ENDIF
  757. ENDIF
  758. ENDIF
  759. C* ELSEIF (CMATE.EQ.'UNIDIREC') THEN
  760. ELSEIF (MATE.EQ.4) THEN
  761. IF ((MFR.EQ.1.OR.MFR.EQ.31).AND.IDIM.EQ.3) THEN
  762. NBROBL=7
  763. NBRFAC=0
  764. SEGINI NOMID
  765. LESOBL(1)='YOUN'
  766. LESOBL(2)='V1X '
  767. LESOBL(3)='V1Y '
  768. LESOBL(4)='V1Z '
  769. LESOBL(5)='V2X '
  770. LESOBL(6)='V2Y '
  771. LESOBL(7)='V2Z '
  772. ELSE
  773. NBROBL=3
  774. NBRFAC=0
  775. SEGINI NOMID
  776. MOMATR=NOMID
  777. LESOBL(1)='YOUN'
  778. LESOBL(2)='V1X '
  779. LESOBL(3)='V1Y '
  780. ENDIF
  781.  
  782. C* ELSEIF (CMATE.EQ.'ZONE_COH') THEN
  783. ELSEIF (MATE.EQ.12) THEN
  784. NBROBL=0
  785. NBRFAC=0
  786. IF (MFR.EQ.77) THEN
  787. NBROBL=2
  788. SEGINI NOMID
  789. MOMATR=NOMID
  790. LESOBL(1)='KS '
  791. LESOBL(2)='KN '
  792. ENDIF
  793. C
  794. ELSE
  795. if(lnomid(6).ne.0) then
  796. nomid=lnomid(6)
  797. nbrobl=lesobl(/2)
  798. nbrfac=lesfac(/2)
  799. lsupma=.false.
  800. else
  801. CALL IDMATR(MFR,IMODEL,MOMATR,NBROBL,NBRFAC)
  802. nomid=momatr
  803. endif
  804. ENDIF
  805. ELSE
  806. if(lnomid(6).ne.0) then
  807. nomid=lnomid(6)
  808. nbrobl=lesobl(/2)
  809. nbrfac=lesfac(/2)
  810. lsupma=.false.
  811. else
  812. CALL IDMATR(MFR,IMODEL,MOMATR,NBROBL,NBRFAC)
  813. nomid=momatr
  814. endif
  815. ENDIF
  816. MOMATR=NOMID
  817. NMATR=NBROBL
  818. NMATF=NBRFAC
  819. NMATT=NMATR+NMATF
  820. C
  821. IF (MOMATR.EQ.0) THEN
  822. CALL ERREUR(5)
  823. GOTO 9990
  824. ENDIF
  825.  
  826. NOTYPE = MOTYR8
  827. C* IF (CMATE.EQ.'SECTION') THEN
  828. IF (MATE.EQ.11) THEN
  829. NBTYPE=3
  830. SEGINI,NOTYPE
  831. TYPE(1)='POINTEURMMODEL'
  832. TYPE(2)='POINTEURMCHAML'
  833. TYPE(3)='POINTEURLISTREEL'
  834. ENDIF
  835. MOTYPE = NOTYPE
  836. C
  837. CALL KOMCHA(IPCHE2,IPMAIL,CONM,MOMATR,MOTYPE,1,INFOS,3,IVAMAT)
  838. IF (MOTYPE.NE.MOTYR8) SEGSUP,NOTYPE
  839. IF (IERR.NE.0) THEN
  840. ISUP2 = 0
  841. GOTO 9990
  842. ENDIF
  843. C
  844. IF(ISUP2.EQ.1)THEN
  845. CALL VALCHE(IVAMAT,NMATT,IPMINT,IPPORE,MOMATR,MELE)
  846. ENDIF
  847. C
  848. C traitement des champs caracteristiques
  849. C
  850. NOMID =0
  851. NBROBL=0
  852. NBRFAC=0
  853. C
  854. C epaisseur et excentrement dans le cas des coques
  855. C
  856. IF (MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9) THEN
  857. NBROBL=1
  858. NBRFAC=1
  859. SEGINI NOMID
  860. LESOBL(1)='EPAI'
  861. LESFAC(1)='EXCE'
  862. C
  863. C section pour les barres
  864. C
  865. ELSE IF (MFR.EQ.27) THEN
  866. NBROBL=1
  867. SEGINI NOMID
  868. LESOBL(1)='SECT'
  869. C
  870. C section, excentrements et orientation pour les barres excentrees
  871. C
  872. ELSE IF (MFR.EQ.49) THEN
  873. NBROBL=6
  874. SEGINI NOMID
  875. LESOBL(1)='SECT'
  876. LESOBL(2)='EXCZ'
  877. LESOBL(3)='EXCY'
  878. LESOBL(4)='VX '
  879. LESOBL(5)='VY '
  880. LESOBL(6)='VZ '
  881. C
  882. C raideurs locales et orientation pour l'element LIA2
  883. C de liaison a 2 noeuds
  884. C
  885. ELSE IF (MFR.EQ.51) THEN
  886. NBROBL=9
  887. SEGINI NOMID
  888. LESOBL(1)='RLUX'
  889. LESOBL(2)='RLUY'
  890. LESOBL(3)='RLUZ'
  891. LESOBL(4)='RLRX'
  892. LESOBL(5)='RLRY'
  893. LESOBL(6)='RLRZ'
  894. LESOBL(7)='VX '
  895. LESOBL(8)='VY '
  896. LESOBL(9)='VZ '
  897. C
  898. C caracteristiques pour les poutres
  899. C
  900. ELSE IF (MFR.EQ.7 ) THEN
  901. C* IF (CMATE.NE.'SECTION') THEN
  902. IF (MATE.NE.11) THEN
  903. C
  904. C CAS 2D
  905. C
  906. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
  907. NBRFAC=1
  908. NBROBL=2
  909. SEGINI NOMID
  910. LESOBL(1)= 'SECT'
  911. LESOBL(2)= 'INRZ'
  912. LESFAC(1)= 'SECY'
  913. C
  914. ELSE
  915. NBROBL=4
  916. NBRFAC=2
  917. SEGINI NOMID
  918. LESOBL(1)='TORS'
  919. LESOBL(2)='INRY'
  920. LESOBL(3)='INRZ'
  921. LESOBL(4)='SECT'
  922. LESFAC(1)='SECY'
  923. LESFAC(2)='SECZ'
  924. ENDIF
  925. ENDIF
  926. C
  927. C caracteristiques pour les tuyaux
  928. C
  929. ELSE IF (MFR.EQ.13) THEN
  930. NBROBL=2
  931. NBRFAC=3
  932. SEGINI NOMID
  933. LESOBL(1)='EPAI'
  934. LESOBL(2)='RAYO'
  935. LESFAC(1)='RACO'
  936. LESFAC(2)='PRES'
  937. LESFAC(3)='CISA'
  938. C
  939. C caracteristiques pour les linespring
  940. C
  941. ELSE IF (MFR.EQ.15) THEN
  942. NBROBL=5
  943. SEGINI NOMID
  944. LESOBL(1)='EPAI'
  945. LESOBL(2)='FISS'
  946. LESOBL(3)='VX '
  947. LESOBL(4)='VY '
  948. LESOBL(5)='VZ '
  949. C
  950. C caracteristiques pour les tuyaux fissures
  951. C
  952. ELSE IF (MFR.EQ.17) THEN
  953. NBROBL=9
  954. SEGINI NOMID
  955. LESOBL(1)='RAYO'
  956. LESOBL(2)='EPAI'
  957. LESOBL(3)='VX '
  958. LESOBL(4)='VY '
  959. LESOBL(5)='VZ '
  960. LESOBL(6)='VXF '
  961. LESOBL(7)='VYF '
  962. LESOBL(8)='VZF '
  963. LESOBL(9)='ANGL'
  964. C
  965. C caracteristiques des elements homogeneises
  966. C
  967. ELSE IF (MFR.EQ.37) THEN
  968. IF(IFOUR.EQ.1.OR.IFOUR.EQ.0) THEN
  969. NBROBL=4
  970. SEGINI NOMID
  971. LESOBL(1)='SCEL'
  972. LESOBL(2)='SFLU'
  973. LESOBL(3)='EPS '
  974. LESOBL(4)='XINE'
  975. ELSE
  976. NBROBL=3
  977. SEGINI NOMID
  978. LESOBL(1)='SCEL'
  979. LESOBL(2)='SFLU'
  980. LESOBL(3)='EPS '
  981. ENDIF
  982. ENDIF
  983. MOCARA=NOMID
  984. NCARA=NBROBL
  985. NCARF=NBRFAC
  986. ncarr= NCARA+NCARF
  987. NCARRw=NCARA+NCARF
  988. if( MFR.EQ.13) ncarrw=ncarrw + 10
  989. IF (MOCARA.NE.0) THEN
  990. MOTYPE=MOTYR8
  991. CALL KOMCHA(IPCHE2,IPMAIL,CONM,MOCARA,MOTYPE,1,INFOS,3
  992. $ ,IVACAR)
  993. IF (IERR.NE.0) THEN
  994. ISUP2 = 0
  995. GOTO 9990
  996. ENDIF
  997. IF (ISUP2.EQ.1) THEN
  998. CALL VALCHE(IVACAR,NCARR,IPMINT,IPPORE,MOCARA,MELE)
  999. ENDIF
  1000. ENDIF
  1001. C
  1002. c____________________________________________________________________
  1003. c
  1004. C traitement des champs de variables internes *
  1005. c____________________________________________________________________
  1006. c
  1007. NVART=0
  1008. C Cas particuliers ou le tableau des variables internes doit etre
  1009. C rempli (a 0) meme si le champ n'est pas fourni.
  1010. IF (IPCHE3.EQ.0) THEN
  1011. IF (INAT.EQ.62) NVART = 3
  1012. IF (INAT.EQ.30) NVART = 2
  1013. ENDIF
  1014. IF (IPCHE3.NE.0) THEN
  1015. if(lnomid(10).ne.0) then
  1016. nomid=lnomid(10)
  1017. movari=nomid
  1018. nvari=lesobl(/2)
  1019. nvarf=lesfac(/2)
  1020. lsupva=.false.
  1021. else
  1022. CALL IDVARI(MFR,IMODEL,MOVARI,NVARI,NVARF)
  1023. lsupva=.true.
  1024. endif
  1025. IF (MOVARI.EQ.0) THEN
  1026. MOTERR(1:4)='VARI'
  1027. MOTERR(5:8)=NOMTP(MELE)
  1028. CALL ERREUR(76)
  1029. GOTO 9990
  1030. ENDIF
  1031. NVART=NVARI+NVARF
  1032.  
  1033. MOTYPE=MOTYR8
  1034. CALL KOMCHA(IPCHE3,IPMAIL,CONM,MOVARI,MOTYPE,1,
  1035. 1 INFOS,3,IVARI)
  1036. IF (IERR.NE.0) THEN
  1037. ISUP3 = 0
  1038. GOTO 9990
  1039. ENDIF
  1040. IF (ISUP3.EQ.1) THEN
  1041. CALL VALCHE(IVARI,NVART,IPMIN1,IPPORE,MOVARI,MELE)
  1042. ENDIF
  1043. ENDIF
  1044. c____________________________________________________________________
  1045. C
  1046. C recherche des dimensions qui correspondraient
  1047. C a un MELVAL de HOOKE
  1048. c____________________________________________________________________
  1049. N2PTEL=0
  1050. N2EL=0
  1051. MPTVAL=IVAMAT
  1052. DO 1500 IO=1,NMATT
  1053. MELVAL=IVAL(IO)
  1054. IF(MELVAL.NE.0)THEN
  1055. C* IF (CMATE.EQ.'SECTION') THEN
  1056. IF (MATE.EQ.11) THEN
  1057. N2PTEL=MAX(N2PTEL,IELCHE(/1))
  1058. N2EL =MAX(N2EL ,IELCHE(/2))
  1059. ELSE
  1060. N2PTEL=MAX(N2PTEL,VELCHE(/1))
  1061. N2EL =MAX(N2EL ,VELCHE(/2))
  1062. ENDIF
  1063. ENDIF
  1064. 1500 CONTINUE
  1065. MPTVAL=IVACAR
  1066. DO 41 IO=1,NCARR
  1067. MELVAL=IVAL(IO)
  1068. IF(MELVAL.NE.0)THEN
  1069. C* IF (CMATE.EQ.'SECTION') THEN
  1070. IF (MATE.EQ.11) THEN
  1071. N2PTEL=MAX(N2PTEL,IELCHE(/1))
  1072. N2EL =MAX(N2EL ,IELCHE(/2))
  1073. ELSE
  1074. N2PTEL=MAX(N2PTEL,VELCHE(/1))
  1075. N2EL =MAX(N2EL ,VELCHE(/2))
  1076. ENDIF
  1077. ENDIF
  1078. 41 CONTINUE
  1079. IF (IPCHE3.NE.0) THEN
  1080. MPTVAL=IVARI
  1081. DO 42 IO=1,NVART
  1082. MELVAL=IVAL(IO)
  1083. IF(MELVAL.NE.0)THEN
  1084. C* IF (CMATE.EQ.'SECTION') THEN
  1085. IF (MATE.EQ.11) THEN
  1086. N2PTEL=MAX(N2PTEL,IELCHE(/1))
  1087. N2EL =MAX(N2EL ,IELCHE(/2))
  1088. ELSE
  1089. N2PTEL=MAX(N2PTEL,VELCHE(/1))
  1090. N2EL =MAX(N2EL ,VELCHE(/2))
  1091. ENDIF
  1092. ENDIF
  1093. 42 CONTINUE
  1094. ENDIF
  1095. IF (N2PTEL.EQ.1.OR.NBPGAU.EQ.1) THEN
  1096. N2PTEL=1
  1097. ELSE
  1098. N2PTEL=NBPGAU
  1099. ENDIF
  1100. C
  1101. C INITIALISATION DES TABLEAUX DE TRAVAIL
  1102. C
  1103. NMAT1=NMATT
  1104. C cette sequence est presente car la troisieme composante
  1105. C (eventuellement) obligatoire est la septieme composante du materiau
  1106. IF(INAT.EQ.26) NMATT=NMATT+4
  1107. SEGINI IWRK1
  1108. IF(MFR.EQ.33.OR.MFR.EQ.57.OR.MFR.EQ.59) SEGINI IWRK4
  1109. C
  1110. IF(MFR.EQ.15) THEN
  1111. IF(NBPGAU.EQ.1) THEN
  1112. S(1)= REAL(0.D0)
  1113. ELSE IF(NBPGAU.EQ.3) THEN
  1114. S(1)=-X774
  1115. S(2)= REAL(0.D0)
  1116. S(3)= X774
  1117. ENDIF
  1118. ENDIF
  1119. C
  1120. IWRK2 = 0
  1121. C* IF ((CMATE.EQ.'ORTHOTRO'.OR.CMATE.EQ.'ANISOTRO'.OR.
  1122. C* & CMATE.EQ.'UNIDIREC') .OR.
  1123. IF ((MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) .OR.
  1124. & ((MELE.EQ.29.OR.MFR.EQ.13).AND.NBPGAU.EQ.2)) THEN
  1125. SEGINI IWRK2
  1126. ENDIF
  1127. C
  1128. C traitement special pour milieu non isotrope
  1129. C
  1130. IPMIN2 = 0
  1131. IF (MFR.EQ.1.OR.MFR.EQ.31.OR.MFR.EQ.33) THEN
  1132. C* IF (CMATE.EQ.'ORTHOTRO'.OR.CMATE.EQ.'ANISOTRO'.OR.
  1133. C* & CMATE.EQ.'UNIDIREC') THEN
  1134. IF (MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) THEN
  1135. IELE=NUMGEO(MELE)
  1136. CALL RESHPT(1,NBNO,IELE,MELE,NPINT,IPMIN2,IRT1)
  1137. MINTE2=IPMIN2
  1138. ENDIF
  1139. ENDIF
  1140. C
  1141. C boucle sur les elements
  1142. C
  1143. DO 2000 IB=1,NBELEM
  1144. C
  1145. C
  1146. IF (IWRK2.NE.0) THEN
  1147. C* IF ( ((CMATE.EQ.'ORTHOTRO'.OR.CMATE.EQ.'ANISOTRO'.OR.
  1148. C* & CMATE.EQ.'UNIDIREC').AND.
  1149. C** IF ( ((MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) .OR.
  1150. C* & (MFR.EQ.1.OR.MFR.EQ.31.OR.MFR.EQ.33)) .OR.
  1151. C* & ((MELE.EQ.29.OR.MFR.EQ.13).AND.NBPGAU.EQ.2) ) THEN
  1152.  
  1153. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1154. C
  1155. IF (IPMIN2.NE.0) THEN
  1156. C* IF (MFR.EQ.1.OR.MFR.EQ.31.OR.MFR.EQ.33) THEN
  1157. C
  1158. C traitement special pour milieu non isotrope
  1159. C
  1160. NBSH=MINTE2.SHPTOT(/2)
  1161. CALL RLOCAL(XE,MINTE2.SHPTOT,NBSH,NBNN,TXR)
  1162. if (nbsh.eq.-1) then
  1163. call erreur(525)
  1164. return
  1165. endif
  1166. ENDIF
  1167. ENDIF
  1168. C
  1169. C boucle sur les points de gauss
  1170. C
  1171. DO 3000 IGAU=1,NBPTEL
  1172.  
  1173. IRECAL=1
  1174. C
  1175. C si N2PTEL et N2EL sont egaux a 1 => champ uniforme dans le maillage
  1176. C => on ne calcule qu'une fois la matrice de HOOKE
  1177. C
  1178. IF(N2PTEL.EQ.1.AND.N2EL.EQ.1) THEN
  1179. IF(IB.GT.1.OR.IGAU.GT.1) THEN
  1180. IRECAL=0
  1181. ENDIF
  1182. ENDIF
  1183. C
  1184. C si N2PTEL est egal a 1 mais pas N2EL => champ uniforme dans l'element
  1185. C => on ne calcule qu'une fois la matrice de HOOKE par element
  1186. C
  1187. IF(N2PTEL.EQ.1.AND.N2EL.NE.1) THEN
  1188. IF(IGAU.GT.1) THEN
  1189. IRECAL=0
  1190. ENDIF
  1191. ENDIF
  1192. c
  1193. c sinon on RECALCULE ( EXTRAIT DE HOOK2D )
  1194. c
  1195. IF(IRECAL.EQ.1) THEN
  1196. C
  1197. MPTVAL=IVAMAT
  1198. DO 1005 IM=1,NMAT1
  1199. MELVAL=IVAL(IM)
  1200. IF (MELVAL.NE.0) THEN
  1201. IF (TYVAL(IM).EQ.'REAL*8') THEN
  1202. IBMN=MIN(IB ,VELCHE(/2))
  1203. IGMN=MIN(IGAU,VELCHE(/1))
  1204. VALMAT(IM)=VELCHE(IGMN,IBMN)
  1205. ELSE
  1206. IBMN=MIN(IB ,IELCHE(/2))
  1207. IGMN=MIN(IGAU,IELCHE(/1))
  1208. VALMAT(IM)=IELCHE(IGMN,IBMN)
  1209. ENDIF
  1210. ELSE
  1211. VALMAT(IM)=0.D0
  1212. ENDIF
  1213. 1005 CONTINUE
  1214. C
  1215. C cette sequence est presente car la troisieme composante
  1216. C (eventuellement) obligatoire est la septieme composante du materiau
  1217. IF(INAT.EQ.26) THEN
  1218. VALMAT(7)=VALMAT(3)
  1219. DO 1006 ICOMP=3,6
  1220. VALMAT(ICOMP)=REAL(0.D0)
  1221. 1006 CONTINUE
  1222. ENDIF
  1223. C
  1224. IF (IPCHE3.NE.0) THEN
  1225. c*- IF(INAT.EQ.26.OR.INAT.EQ.29.OR.INAT.EQ.30.OR.
  1226. c*- . INAT.EQ.62.OR.INAT.EQ.64.OR.INAT.EQ.65.OR.INAT.EQ.118) THEN
  1227. MPTVAL=IVARI
  1228. DO 1007 IM=1,NVART
  1229. IF (IVAL(IM).NE.0) THEN
  1230. MELVAL=IVAL(IM)
  1231. IBMN=MIN(IB ,VELCHE(/2))
  1232. IGMN=MIN(IGAU,VELCHE(/1))
  1233. VAR(IM)=VELCHE(IGMN,IBMN)
  1234. ELSE
  1235. VAR(IM)=0.D0
  1236. ENDIF
  1237. 1007 CONTINUE
  1238. ENDIF
  1239. C
  1240. IF(MFR.EQ.7.OR.MFR.EQ.13.OR.MFR.EQ.15.
  1241. 1 OR.MFR.EQ.17) THEN
  1242. C
  1243. C ON CHERCHE LES CARACTERISTIQUES DE L ELEMENT IB
  1244. C
  1245. C* IF(CMATE.EQ.'SECTION') THEN
  1246. IF(MATE.EQ.11) THEN
  1247. C
  1248. MPTVAL=IVAMAT
  1249. MELVAL=IVAL(1)
  1250. IBMN=MIN(IB ,IELCHE(/2))
  1251. IGMN=MIN(IGAU,IELCHE(/1))
  1252. IPMODS=IELCHE(IGMN,IBMN)
  1253. MELVAL=IVAL(2)
  1254. IBMN=MIN(IB ,IELCHE(/2))
  1255. IGMN=MIN(IGAU,IELCHE(/1))
  1256. IPCAS=IELCHE(IGMN,IBMN)
  1257. CALL FRIGIE(IPMODS,IPCAS,CRIGI,CMASS)
  1258. C
  1259. ELSEIF (MFR.EQ.15) THEN
  1260. C
  1261. IE=1
  1262. MPTVAL=IVACAR
  1263. DO 7030 IC=1,3,2
  1264. DO 7029 ICOMP=1,NCARR
  1265. MELVAL=IVAL(ICOMP)
  1266. IF (MELVAL.NE.0) THEN
  1267. IGMN=MIN(IC,VELCHE(/1))
  1268. IBMN=MIN(IB,VELCHE(/2))
  1269. VALCAR(IE)=VELCHE(IGMN,IBMN)
  1270. ELSE
  1271. VALCAR(IE)=REAL(0.D0)
  1272. ENDIF
  1273. IE=IE+1
  1274. 7029 CONTINUE
  1275. 7030 CONTINUE
  1276. C
  1277. ELSE
  1278. C
  1279. MPTVAL=IVACAR
  1280. DO 1010 ICOMP=1,NCARR
  1281. MELVAL=IVAL(ICOMP)
  1282. IF (MELVAL.NE.0) THEN
  1283. IBMN=MIN(IB ,VELCHE(/2))
  1284. IGMN=MIN(IGAU,VELCHE(/1))
  1285. VALCAR(ICOMP)=VELCHE(IGMN,IBMN)
  1286. ELSE
  1287. VALCAR(ICOMP)=REAL(0.D0)
  1288. ENDIF
  1289. 1010 CONTINUE
  1290. ENDIF
  1291. ENDIF
  1292. C
  1293. IF(MFR.EQ.27.OR.MFR.EQ.49) THEN
  1294. C
  1295. C ON CHERCHE LA SECTION DE L'ELEMENT IB
  1296. C
  1297. MPTVAL=IVACAR
  1298. MELVAL=IVAL(1)
  1299. IF (MELVAL.NE.0) THEN
  1300. IBMN=MIN(IB ,VELCHE(/2))
  1301. IGMN=MIN(IGAU,VELCHE(/1))
  1302. SECT=VELCHE(IGMN,IBMN)
  1303. ELSE
  1304. SECT=REAL(0.D0)
  1305. ENDIF
  1306. ENDIF
  1307. C
  1308. C Prise en compte de l'epaisseur et de l'excentrement
  1309. C dans le cas des coques minces avec ou sans cisaillement
  1310. C transverse
  1311. C
  1312. IF (MFR.EQ.3.OR.MFR.EQ.9) THEN
  1313. C* IF (CMATE.EQ.'ISOTROPE'.OR.CMATE.EQ.'ORTHOTRO'.OR.
  1314. C* 1 CMATE.EQ.'UNIDIREC') THEN
  1315. IF (MATE.EQ.1.OR.MATE.EQ.2.OR.MATE.EQ.4) THEN
  1316. MPTVAL=IVACAR
  1317. MELVAL=IVAL(1)
  1318. IF (MELVAL.NE.0) THEN
  1319. IBMN=MIN(IB ,VELCHE(/2))
  1320. IGMN=MIN(IGAU,VELCHE(/1))
  1321. EPAIST=VELCHE(IGMN,IBMN)
  1322. ELSE
  1323. CALL ERREUR(527)
  1324. GOTO 9990
  1325. ENDIF
  1326. C
  1327. C LASURF=0
  1328. EXCEN = REAL(0.D0)
  1329. ENDIF
  1330. ENDIF
  1331.  
  1332. C ______________________________________________________________________
  1333. C
  1334. C TRAITEMENT SUIVANT TYPE DE MATERIAU
  1335. C_______________________________________________________________________
  1336. IRETOU = 1
  1337. C* IF (CMATE.EQ.'ISOTROPE'.OR.CMATE.EQ.'ZONE_COH') THEN
  1338. IF (MATE.EQ.1.OR.MATE.EQ.12) THEN
  1339. CALL HOOKIS(VALMAT,VALCAR,VAR,MFR,IB,IGAU,EXCEN,EPAIST,
  1340. + INAT,MELE,NPINT,IFOUR,KCAS,N2PTEL,N2EL,
  1341. + S,SECT,LHOOK,DDHOMU,DDHOOK,
  1342. + COBMA,XMOB,IRETOU)
  1343. C
  1344. C* ELSE IF (CMATE.EQ.'ORTHOTRO') THEN
  1345. ELSE IF (MATE.EQ.2) THEN
  1346. CALL HOOKOR(VALMAT,IB,IGAU,MFR,EXCEN,EPAIST,
  1347. + MELE,NPINT,IFOUR,KCAS,N2PTEL,N2EL,SECT,LHOOK,
  1348. + TXR,XLOC,XGLOB,D1HOOK,ROTHOO,DDHOMU,DDHOOK,
  1349. + COBMA,XMOB,IRETOU)
  1350. C
  1351. C* ELSE IF (CMATE.EQ.'ANISOTRO') THEN
  1352. ELSE IF (MATE.EQ.3) THEN
  1353. CALL HOOKAN(VALMAT,IB,IGAU,MFR,IFOUR,KCAS,N2PTEL,N2EL,
  1354. + SECT,LHOOK,TXR,XLOC,XGLOB,D1HOOK,ROTHOO,DDHOOK,
  1355. + MELE,COBMA,XMOB,IRETOU)
  1356. C
  1357. C* ELSE IF (CMATE.EQ.'UNIDIREC') THEN
  1358. ELSE IF (MATE.EQ.4) THEN
  1359. CALL HOOKUN(VALMAT,IB,IGAU,MFR,EXCEN,EPAIST,
  1360. + MELE,NPINT,IFOUR,KCAS,N2PTEL,N2EL,SECT,LHOOK,
  1361. + TXR,XLOC,XGLOB,D1HOOK,ROTHOO,DDHOMU,DDHOOK,
  1362. + COBMA,XMOB,IRETOU)
  1363. C
  1364. ELSE IF (CMATE.EQ.'HOMOGENE') THEN
  1365. C* ELSE IF (MATE.EQ.9) THEN
  1366. CALL HOOKHO(VALMAT,IB,IGAU,MFR,N2PTEL,N2EL,SECT,
  1367. + LHOOK,DDHOOK,IRETOU)
  1368. C
  1369. C* ELSE IF (CMATE.EQ.'SECTION') THEN
  1370. ELSE IF (MATE.EQ.11) THEN
  1371. CALL HOOKSE(VALMAT,IB,IGAU,MFR,CRIGI,IFOUR,
  1372. + N2PTEL,N2EL,SECT,LHOOK,DDHOOK,IRETOU)
  1373. C
  1374. ENDIF
  1375. C
  1376. IF (IRETOU.EQ.0) THEN
  1377. IF (MFR.EQ.3.AND.NPINT.NE.0) THEN
  1378. CALL ERREUR(251)
  1379. ELSE
  1380. MOTERR(1:8)=NOMFR(MFR/2+1)
  1381. CALL ERREUR(193)
  1382. ENDIF
  1383. GOTO 2000
  1384. ENDIF
  1385. C
  1386. C inversion si besoin
  1387. C
  1388. IF(KCAS.EQ.2.AND.INAT.NE.26.AND.INAT.NE.29.
  1389. & AND.INAT.NE.65) THEN
  1390. CALL INVALM(DDHOOK,LHOOK,LHOOK,KERRE,0.D0)
  1391. IF(KERRE.NE.0) THEN
  1392. CALL ERREUR(713)
  1393. GO TO 9992
  1394. ENDIF
  1395. ENDIF
  1396. C
  1397. C fin du test irecal
  1398. ENDIF
  1399. C
  1400. C ------ fin de determination de la matrice de hooke
  1401. C
  1402. C
  1403. C on remplit ici les differentes quantites necessaires
  1404. C
  1405. C deformations
  1406. C
  1407. MPTVAL=IVASTR
  1408. IF (KCAS.EQ.2) THEN
  1409. DO 4000 ICOMP=1,NSTR
  1410. MELVAL=IVAL(ICOMP)
  1411. IGMN=MIN(IGAU,VELCHE(/1))
  1412. IBMN=MIN(IB ,VELCHE(/2))
  1413. SIGF(ICOMP)=VELCHE(IGMN,IBMN)
  1414. 4000 CONTINUE
  1415. C* ELSE IF(KCAS.EQ.1) THEN
  1416. ELSE
  1417. DO 4001 ICOMP=1,NSTR
  1418. MELVAL=IVAL(ICOMP)
  1419. IGMN=MIN(IGAU,VELCHE(/1))
  1420. IBMN=MIN(IB ,VELCHE(/2))
  1421. EPSI(ICOMP)=VELCHE(IGMN,IBMN)
  1422. 4001 CONTINUE
  1423. ENDIF
  1424. C
  1425. C cas des milieux poreux
  1426. C
  1427. IF(MFR.EQ.33) THEN
  1428. C
  1429. IF(XMOB.EQ.REAL(0.D0)) THEN
  1430. C**** INTERR(1)=IB
  1431. C**** CALL ERREUR(537)
  1432. UNSURM=REAL(0.D0)
  1433. ELSE
  1434. UNSURM=1.D0/XMOB
  1435. ENDIF
  1436. C
  1437. C calcul des contraintes ou des deformations
  1438. C
  1439. IF(KCAS.EQ.1) THEN
  1440. C
  1441. DO 4500 I=1,LHOOK
  1442. SIGF(I)=-COBMA(I)*EPSI(NSTRS)
  1443. DO 45001 J=1,LHOOK
  1444. SIGF(I)=SIGF(I)+DDHOOK(I,J)*EPSI(J)
  1445. 45001 CONTINUE
  1446. 4500 CONTINUE
  1447. C
  1448. SIGF(NSTRS)=EPSI(NSTRS)*UNSURM
  1449. DO 4502 I=1,LHOOK
  1450. SIGF(NSTRS)=SIGF(NSTRS)+COBMA(I)*EPSI(I)
  1451. 4502 CONTINUE
  1452. C
  1453. C
  1454. C* ELSE IF (KCAS.EQ.2) THEN
  1455. ELSE
  1456. C
  1457. CALL ZERO(VECO1,LHOOK,1)
  1458. CALL ZERO(VECO2,LHOOK,1)
  1459. FAC1 = REAL(0.D0)
  1460. FAC2 = REAL(0.D0)
  1461. DO 5003 I=1,LHOOK
  1462. DO 5004 J=1,LHOOK
  1463. VECO1(I)=VECO1(I)+DDHOOK(I,J)*SIGF(J)
  1464. VECO2(I)=VECO2(I)+DDHOOK(I,J)*COBMA(J)
  1465. 5004 CONTINUE
  1466. FAC1 = FAC1 + COBMA(I)*VECO1(I)
  1467. FAC2 = FAC2 + COBMA(I)*VECO2(I)
  1468. 5003 CONTINUE
  1469.  
  1470. EPSI(NSTRS)=(SIGF(NSTRS)-FAC1)/(UNSURM+FAC2)
  1471.  
  1472. DO I=1,LHOOK
  1473. r_z=REAL(0.D0)
  1474. DO J=1,LHOOK
  1475. r_z = r_z + DDHOOK(I,J)*
  1476. & (SIGF(J) + COBMA(J)*EPSI(NSTRS))
  1477. ENDDO
  1478. EPSI(I) = r_z
  1479. ENDDO
  1480. ENDIF
  1481. C
  1482. C autres cas
  1483. C
  1484. ELSE
  1485. C
  1486. IF(KCAS.EQ.1) THEN
  1487. DO I=1,LHOOK
  1488. r_z=REAL(0.D0)
  1489. DO J=1,LHOOK
  1490. r_z = r_z + DDHOOK(I,J)*EPSI(J)
  1491. ENDDO
  1492. SIGF(I) = r_z
  1493. ENDDO
  1494. C* ELSE IF (KCAS.EQ.2) THEN
  1495. ELSE
  1496. DO I=1,LHOOK
  1497. r_z=REAL(0.D0)
  1498. DO J=1,LHOOK
  1499. r_z = r_z + DDHOOK(I,J)*SIGF(J)
  1500. ENDDO
  1501. EPSI(I) = r_z
  1502. ENDDO
  1503. ENDIF
  1504. C
  1505. C cas des tuyaux fissures
  1506. C
  1507. IF (MFR.EQ.17) THEN
  1508. IF (KCAS.EQ.1) THEN
  1509. C
  1510. MPTVAL=IVAMAT
  1511. MELVAL=IVAL(1)
  1512. IBMN=MIN(IB,VELCHE(/2))
  1513. IGMN=MIN(IGAU,VELCHE(/1))
  1514. YOU=VELCHE(IGMN,IBMN)
  1515. C
  1516. RAYO=VALCAR(1)
  1517. EPAI=VALCAR(2)
  1518. TETA1=VALCAR(9)*UNDEMI
  1519. c conversion de teta1 en radian
  1520. TETA = (TETA1 * XPI)/REAL(180.D0)
  1521. TESPI = TETA/XPI
  1522. c on met dans 'raymo' le rayon moyen du tuyau.
  1523. RAYMO =RAYO - (EPAI/DEUX)
  1524. c calcul de a coefiicient zahor
  1525. RSURT=RAYMO / EPAI
  1526. IF(RSURT.LE.10.D0.AND.RSURT.GE.4.9D0) THEN
  1527. AXX = ( .125D0*RSURT - .25D0 ) **.25D0
  1528. ELSE IF(RSURT.GT.10.D0.AND.RSURT.LE.35.D0) THEN
  1529. AXX = ( .4D0*RSURT - 3.D0 ) **.25D0
  1530. ELSE
  1531. KERRE=4
  1532. ENDIF
  1533. CALL TUFIFP(TESPI,AXX,FP,FM,FMP,FOP,FOM)
  1534. c
  1535. c facteur d intensite des contraintes
  1536. c
  1537. IF(TETA1.LE.(0.5D0))THEN
  1538. SIGF(7)=REAL(0.D0)
  1539. SIGF(8)=REAL(0.D0)
  1540. GOTO 6500
  1541. ENDIF
  1542. SQQ= XPI * RAYMO * TETA
  1543. SQQ= SQRT(SQQ)
  1544. XEX= SQQ * FOP/(DEUX * XPI * RAYMO *EPAI)
  1545. XFL= SQQ * FOM/(XPI * RAYMO * RAYMO *EPAI)
  1546. SIGF(7)=XEX * SIGF(1) - XFL * SIGF(6)
  1547. c
  1548. c calcul des aires de breche note technique dre/stre/lma 85/695
  1549. c
  1550. SIGM=SIGF(1)/( DEUX * XPI * RAYMO * EPAI )
  1551. SIG=SIGF(6)/( XPI * RAYMO * RAYMO * EPAI )
  1552. XIM= XPI * RAYMO * RAYMO * DEUX * TETA * TETA * FP
  1553. $ /YOU
  1554. XIF= XIM * ( .75D0 +(.25D0 * COS ( TETA )))
  1555. SIGF(8)=XIM * SIGM - XIF * SIG
  1556. C
  1557. C* ELSEIF (KCAS.EQ.2) THEN
  1558. ELSE
  1559. EPSI(7)=REAL(0.D0)
  1560. EPSI(8)=REAL(0.D0)
  1561. C
  1562. ENDIF
  1563. ENDIF
  1564. C
  1565. C cas des lisp et lism
  1566. C
  1567. IF (MFR.EQ.15.AND.KCAS.EQ.1) THEN
  1568. EPA1=VALCAR(1)
  1569. EPA2=VALCAR(6)
  1570. FISS1=VALCAR(2)
  1571. FISS2=VALCAR(7)
  1572. FISS1 = (FISS1*(UNDEMI +UNDEMI/X774))+
  1573. + (FISS2*(UNDEMI-UNDEMI/X774))
  1574. FISS2 = (FISS1*(UNDEMI -UNDEMI/X774))+
  1575. + (FISS2*(UNDEMI+UNDEMI/X774))
  1576. W=(EPA1+EPA2)*UNDEMI
  1577. H1=UNDEMI-UNDEMI*S(IGAU)
  1578. H2=UNDEMI+UNDEMI*S(IGAU)
  1579. A= H1*FISS1+H2*FISS2
  1580. ASURW=(H1*FISS1+H2*FISS2)/W
  1581. CALL LISPFI(ASURW,FM,FF)
  1582. X1=SIGF(1)/W
  1583. X4=SIGF(4)*SIX/(W*W)
  1584. XXX=XPI*A
  1585. XXX=SQRT(XXX)
  1586. XKIE=(X1*FM+X4*FF)*XXX
  1587. SIGF(6)= XKIE
  1588. C
  1589. ENDIF
  1590. ENDIF
  1591. C
  1592. 6500 CONTINUE
  1593.  
  1594. IF(KERRE.EQ.0) THEN
  1595. c
  1596. c remplissage du segment contenant les contraintes a la fin
  1597. c
  1598. MPTVAL=IVARES
  1599. IF (KCAS.EQ.2) THEN
  1600. DO ICOMP=1,NRES
  1601. MELVA1=IVAL(ICOMP)
  1602. MELVA1.VELCHE(IGAU,IB)=EPSI(ICOMP)
  1603. ENDDO
  1604. C* ELSE IF (KCAS.EQ.1) THEN
  1605. ELSE
  1606. DO ICOMP=1,NRES
  1607. MELVA1=IVAL(ICOMP)
  1608. MELVA1.VELCHE(IGAU,IB)=SIGF(ICOMP)
  1609. ENDDO
  1610. ENDIF
  1611. ELSE
  1612. C
  1613. C impression de quelques messages d erreurs
  1614. C
  1615. INTERR(1)=IB
  1616. INTERR(2)=IGAU
  1617. MOTERR(1:4)=NOMTP(MELE)
  1618. IF(KERRE.EQ.1) THEN
  1619. CALL ERREUR(301)
  1620. ELSE IF(KERRE.EQ.2) THEN
  1621. CALL ERREUR(300)
  1622. ELSE IF(KERRE.EQ.3) THEN
  1623. MOTERR(1:8)='ELASTI'
  1624. CALL ERREUR(146)
  1625. ELSE IF(KERRE.EQ.4) THEN
  1626. CALL ERREUR(266)
  1627. ELSE IF(KERRE.EQ.49) THEN
  1628. CALL ERREUR(359)
  1629. ENDIF
  1630. SEGSUP IWRK1
  1631. IF (IWRK2.NE.0) SEGSUP IWRK2
  1632. IF(MFR.EQ.33) SEGSUP IWRK4
  1633. GOTO 9990
  1634. ENDIF
  1635. C
  1636. 3000 CONTINUE
  1637. c
  1638. c cas des elements pout : calcul des efforts tranchants
  1639. c
  1640. IF ((MELE.EQ.29.OR.MFR.EQ.13).AND.NBPGAU.EQ.2) THEN
  1641. MPTVAL=IVARES
  1642. SEGINI WPOUT
  1643. IGAU=1
  1644. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
  1645. r_x = XE(1,2) - XE(1,1)
  1646. r_y = XE(2,2) - XE(2,1)
  1647. XL=SQRT(r_x*r_x + r_y*r_y)
  1648. XL=1.D00/XL
  1649. DO 3200 ICOMP=1,NRES
  1650. MELVA1=IVAL(ICOMP)
  1651. SIG1(ICOMP)=MELVA1.VELCHE(IGAU,IB)
  1652. SIG2(ICOMP)=MELVA1.VELCHE(IGAU+1,IB)
  1653. 3200 CONTINUE
  1654. c r_z = (SIG1(1)+SIG2(1))*0.5D0
  1655. c MELVA1=IVAL(1)
  1656. c MELVA1.VELCHE(IGAU,IB)=r_z
  1657. c MELVA1.VELCHE(IGAU+1,IB)=r_z
  1658. r_z = (SIG1(3)-SIG2(3))*XL
  1659. MELVA1=IVAL(2)
  1660. MELVA1.VELCHE(IGAU,IB)=r_z
  1661. MELVA1.VELCHE(IGAU+1,IB)=r_z
  1662. ELSE
  1663. r_x = XE(1,2) - XE(1,1)
  1664. r_y = XE(2,2) - XE(2,1)
  1665. r_z = XE(3,2) - XE(3,1)
  1666. XL=SQRT(r_x*r_x + r_y*r_y + r_z*r_z)
  1667. XL=1.D0/XL
  1668. DO 3202 ICOMP=1,NRES
  1669. MELVA1=IVAL(ICOMP)
  1670. SIG1(ICOMP)=MELVA1.VELCHE(IGAU,IB)
  1671. SIG2(ICOMP)=MELVA1.VELCHE(IGAU+1,IB)
  1672. 3202 CONTINUE
  1673. c r_z = (SIG1(1)+SIG2(1))*0.5D0
  1674. c MELVA1=IVAL(1)
  1675. c MELVA1.VELCHE(IGAU,IB)=r_z
  1676. c MELVA1.VELCHE(IGAU+1,IB)=r_z
  1677. r_z = (SIG1(6)-SIG2(6))*XL
  1678. MELVA1=IVAL(2)
  1679. MELVA1.VELCHE(IGAU,IB)=r_z
  1680. MELVA1.VELCHE(IGAU+1,IB)=r_z
  1681. r_z = (SIG2(5)-SIG1(5))*XL
  1682. MELVA1=IVAL(3)
  1683. MELVA1.VELCHE(IGAU,IB)=r_z
  1684. MELVA1.VELCHE(IGAU+1,IB)=r_z
  1685. ENDIF
  1686. SEGSUP WPOUT
  1687. ENDIF
  1688. c
  1689. 2000 CONTINUE
  1690. C
  1691. SEGSUP IWRK1
  1692. IF (IWRK2.NE.0) SEGSUP IWRK2
  1693. IF(MFR.EQ.33.OR.MFR.EQ.57.OR.MFR.EQ.59) SEGSUP IWRK4
  1694. C
  1695. IF (ISUP2.EQ.1) THEN
  1696. CALL DTMVAL(IVAMAT,3)
  1697. CALL DTMVAL(IVACAR,3)
  1698. ELSE
  1699. CALL DTMVAL(IVAMAT,1)
  1700. CALL DTMVAL(IVACAR,1)
  1701. ENDIF
  1702. C
  1703. IF(IPCHE3.NE.0) THEN
  1704. IF (ISUP3.EQ.1) THEN
  1705. CALL DTMVAL(IVARI,3)
  1706. ELSE
  1707. CALL DTMVAL(IVARI,1)
  1708. ENDIF
  1709. NOMID=MOVARI
  1710. if(lsupva)SEGSUP NOMID
  1711. ENDIF
  1712. C
  1713. IF (ISUP1.EQ.1) THEN
  1714. CALL DTMVAL(IVASTR,3)
  1715. ELSE
  1716. CALL DTMVAL(IVASTR,1)
  1717. ENDIF
  1718. C
  1719. CALL DTMVAL(IVARES,1)
  1720. C
  1721. NOMID=MOMATR
  1722. if(lsupma)SEGSUP NOMID
  1723. NOMID=MOCARA
  1724. IF (MOCARA.NE.0) SEGSUP NOMID
  1725. NOMID=MOSTRS
  1726. if(lsupin)SEGSUP NOMID
  1727. NOMID=MORES
  1728. if(lsupre)SEGSUP NOMID
  1729. IF (IERR.NE.0) GOTO 9992
  1730. C
  1731. 500 CONTINUE
  1732.  
  1733. IRET = 1
  1734. GOTO 9992
  1735. C
  1736. 9990 CONTINUE
  1737. C
  1738. C erreur dans une sous zone, desactivation et retour
  1739. C
  1740. IF (ISUP1.EQ.1) THEN
  1741. CALL DTMVAL(IVASTR,3)
  1742. ELSE
  1743. CALL DTMVAL(IVASTR,1)
  1744. ENDIF
  1745. NOMID=MOSTRS
  1746. if(lsupin)SEGSUP NOMID
  1747.  
  1748. C CB215821 : La suppression de IVARES tel que c'est commenté ci-dessous
  1749. C peut conduire à une GEMAT ERROR plus loin dans le code
  1750. C Sa suppression en cas d'erreur est suspendue
  1751. C IF (IVARES.NE.0) CALL DTMVAL(IVARES,3)
  1752. NOMID=MORES
  1753. if(lsupre)SEGSUP NOMID
  1754.  
  1755. IF (ISUP2.EQ.1) THEN
  1756. CALL DTMVAL(IVAMAT,3)
  1757. CALL DTMVAL(IVACAR,3)
  1758. ELSE
  1759. CALL DTMVAL(IVAMAT,1)
  1760. CALL DTMVAL(IVACAR,1)
  1761. ENDIF
  1762. IF (MOMATR.NE.0) THEN
  1763. NOMID=MOMATR
  1764. if(lsupma)SEGSUP NOMID
  1765. ENDIF
  1766. IF (MOCARA.NE.0) THEN
  1767. NOMID=MOCARA
  1768. SEGSUP NOMID
  1769. ENDIF
  1770.  
  1771. IF(IPCHE3.NE.0) THEN
  1772. IF (ISUP3.EQ.1) THEN
  1773. CALL DTMVAL(IVARI,3)
  1774. ELSE
  1775. CALL DTMVAL(IVARI,1)
  1776. ENDIF
  1777. NOMID=MOVARI
  1778. if(lsupva)SEGSUP NOMID
  1779. ENDIF
  1780.  
  1781. IF (MCHAM1.NE.0) SEGSUP MCHAM1
  1782.  
  1783. 9991 CONTINUE
  1784. SEGSUP MCHEL1
  1785. IRET=0
  1786.  
  1787. 9992 CONTINUE
  1788.  
  1789. C On detruit le 2e modele. Les sous-zones viennent d'etre desactivees.
  1790. MMODE2 = IPMOD2
  1791. SEGSUP,MMODE2
  1792.  
  1793. NOTYPE = MOTYR8
  1794. SEGSUP,NOTYPE
  1795.  
  1796. END
  1797.  
  1798.  
  1799.  

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