Télécharger elas1.eso

Retour à la liste

Numérotation des lignes :

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

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