Télécharger motana.eso

Retour à la liste

Numérotation des lignes :

motana
  1. C MOTANA SOURCE CB215821 24/04/12 21:16:46 11897
  2. SUBROUTINE MOTANA(IPMODL,IPCHE1,IPCHE2,IPCHE3,PRECIS,IPSCAL,IRET)
  3. *______________________________________________________________________
  4. *
  5. *
  6. *
  7. * ENTREES :
  8. * ---------
  9. * IPMODL pointeur sur un MMODEL
  10. * IPCHE1 pointeur sur un MCHAML de sous type CONTRAINTES
  11. * IPCHE2 pointeur sur un MCHAML de sous type VARIABLES INTERNES
  12. * IPCHE3 pointeur sur le MCHAML de sous type CARACTARISTIQUE
  13. * PRECIS flottant
  14. *
  15. * SORTIES :
  16. * ---------
  17. * IPSCAL pointeur sur l'objet de type RIGIDITE
  18. * IRET = 1 si succes 0 sinon
  19. *
  20. * passage aux nouveaux CHAMELEMs par JM CAMPENON LE 06/91
  21. *
  22. *______________________________________________________________________
  23. *
  24. IMPLICIT INTEGER(I-N)
  25. IMPLICIT REAL*8(A-H,O-Z)
  26. *
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC CCHAMP
  30. -INC SMINTE
  31. -INC SMMODEL
  32. -INC SMELEME
  33. -INC SMCHAML
  34. -INC SMCOORD
  35. -INC SMLREEL
  36. -INC SMEVOLL
  37. *______________________________________________________________________
  38. *
  39. * LA VARIABLE KERRE REGIT LES IMPRESSIONS D ERREURS DANS MOTAN
  40. * TOUTES ERREURS DE PLASTICITE GEREES DANS CE SOUS PROGRAMME
  41. * KERRE=0 TOUT OK
  42. * DE 1 A 7 S ALIGNER SUR VALEURS DONNEES PAR ECOINC
  43. * = 21 ON NE TROUVE PAS D INTERSECTION AVEC LA SURFACE DE CHARGE
  44. * = 22 SIG0 A L EXTERIEUR DE LA SURFACE DE CHARGE
  45. *
  46. * = 30 31 32 ANOMALIES AVEC LA COURBE DE TRACTION
  47. * = 33 LIMITE ELASTIQUE NULLE
  48. * = 99 CAS NON ENCORE DISPONIBLE
  49. *----------------------------------------------------------------------
  50. *
  51. SEGMENT WRK0
  52. REAL*8 XMAT(NCXMAT)
  53. ENDSEGMENT
  54. *
  55. SEGMENT WRK1
  56. REAL*8 DDHOOK(NSTRS,NSTRS),SIG0(NSTRS),
  57. . DSIGT(NSTRS),SIGF(NSTRS),VAR0(NVARI),
  58. . VARF(NVARI),DEFP(NSTRS),XCAR(ICARA)
  59. ENDSEGMENT
  60. *
  61. SEGMENT WRK2
  62. REAL*8 TRAC(LTRAC)
  63. ENDSEGMENT
  64. *
  65. SEGMENT WRK3
  66. REAL*8 WORK(LW)
  67. ENDSEGMENT
  68. *
  69. SEGMENT WRK4
  70. REAL *8 XE(3,NBBB)
  71. ENDSEGMENT
  72. *
  73. SEGMENT WRK5
  74. REAL*8 SIG(LSIG),EPS(LSIG)
  75. ENDSEGMENT
  76. *
  77. SEGMENT WRK6
  78. REAL*8 COVNMS(6)
  79. ENDSEGMENT
  80. *
  81. SEGMENT MPTVAL
  82. INTEGER IPOS(NS) ,NSOF(NS)
  83. INTEGER IVAL(NCOSOU)
  84. CHARACTER*16 TYVAL(NCOSOU)
  85. ENDSEGMENT
  86. *
  87. SEGMENT NOTYPE
  88. CHARACTER*16 TYPE(NBTYPE)
  89. ENDSEGMENT
  90. *
  91. CHARACTER*8 CMATE
  92. CHARACTER*(NCONCH) CONM
  93. PARAMETER ( NINF=3 )
  94. INTEGER INFOS(NINF)
  95. LOGICAL lsupva,lsupco
  96. *
  97. DIMENSION XEPOU(2),YEPOU(2),ZEPOU(2),DIV(7)
  98. DATA PI4,R33,R22/0.785398164D0,1.732050808D0,1.414213562D0/
  99.  
  100. IRET = 0
  101. NHRM=NIFOUR
  102. *
  103. * Verification du lieu support du MCHAML de contraintes
  104. *
  105. CALL QUESUP(IPMODL,IPCHE1,3,0,ISUPCO,IRETCO)
  106. IF (ISUPCO.GT.1) RETURN
  107. *
  108. * Verification du lieu support du MCHAML de variables internes
  109. *
  110. CALL QUESUP(IPMODL,IPCHE2,3,0,ISUPVA,IRETVA)
  111. IF (ISUPVA.GT.1) RETURN
  112. *
  113. * Verification du lieu support du MCHAML de materiau
  114. *
  115. CALL QUESUP(IPMODL,IPCHE3,3,0,ISUPMA,IRETMA)
  116. IF (ISUPMA.GT.1) RETURN
  117. *
  118. * Activation du MMODEL
  119. *
  120. MMODEL=IPMODL
  121. SEGACT MMODEL
  122. NSOUS=KMODEL(/1)
  123. *
  124. * Creation du MCHELM
  125. *
  126. N1=NSOUS
  127. L1=8
  128. N3=6
  129. SEGINI MCHELM
  130. TITCHE='SCALAIRE'
  131. IFOCHE=IFOUR
  132. IPSCAL=MCHELM
  133. *
  134. DO 500 ISOUS=1,NSOUS
  135. *
  136. * INITIALISATION
  137. *
  138. NSTR=0
  139. IVACON=0
  140. MOVARI=0
  141. NVARI=0
  142. IVAVAR=0
  143. NCARA=0
  144. NCARF=0
  145. MOCARA=0
  146. IVACAR=0
  147. NMATF=0
  148. NMATR=0
  149. MOMATR=0
  150. IVAMAT=0
  151. KERRE=0
  152. *
  153. IMODEL=KMODEL(ISOUS)
  154. IPMOD1=IMODEL
  155. SEGACT IMODEL
  156. IPMAIL=IMAMOD
  157. CONM =CONMOD
  158. C
  159. C COQUE INTEGREE OU PAS ?
  160. C
  161. IF(INFMOD(/1).NE.0)THEN
  162. NPINT=INFMOD(1)
  163. ELSE
  164. NPINT=0
  165. ENDIF
  166. IF (NPINT.NE.0)THEN
  167. CALL ERREUR(615)
  168. SEGDES IMODEL,MMODEL
  169. SEGSUP MCHELM
  170. RETURN
  171. ENDIF
  172. C
  173. IMACHE(ISOUS)=IPMAIL
  174. CONCHE(ISOUS)=CONMOD
  175. *
  176. MELE=NEFMOD
  177. MELEME=IMAMOD
  178. *
  179. * Nature du materiau
  180. *
  181. NFOR=FORMOD(/2)
  182. NMAT=MATMOD(/2)
  183. CALL NOMATE (FORMOD,NFOR,MATMOD,NMAT,CMATE,INELAS,INPLAS)
  184. IF (CMATE.EQ.' '.OR.CMATE.NE.'ISOTROPE') THEN
  185. CALL ERREUR(251)
  186. GOTO 9900
  187. ENDIF
  188. *
  189. * Information sur l'element fini
  190. *
  191. * CALL ELQUOI(MELE,0,3,IPINF,IMODEL)
  192. * IF (IERR.NE.0) GOTO 9900
  193. * INFO =IPINF
  194. MFR =INFELE(13)
  195. NBG =INFELE(6)
  196. NBGS =INFELE(4)
  197. NSTRS=INFELE(16)
  198. LW =200
  199. LHOOK=INFELE(10)
  200. * MINTE=INFELE(11)
  201. minte=infmod(5)
  202. IPMIN1=MINTE
  203. *
  204. INFCHE(ISOUS,1)=0
  205. INFCHE(ISOUS,2)=0
  206. INFCHE(ISOUS,3)=NHRM
  207. INFCHE(ISOUS,4)=MINTE
  208. INFCHE(ISOUS,5)=0
  209. INFCHE(ISOUS,6)=3
  210. *
  211. SEGACT MINTE
  212. NBPGAU=POIGAU(/1)
  213. NBNO =SHPTOT(/2)
  214. *
  215. SEGACT MELEME
  216. NBNN =NUM(/1)
  217. NBELEM=NUM(/2)
  218. IPPORE=0
  219. IF(MFR.EQ.33) IPPORE=NBNN
  220.  
  221. * INFO=IPINF
  222. * SEGSUP INFO
  223. *
  224. * Creation du tableau INFOS
  225. *
  226. CALL IDENT(IPMAIL,CONM,IPCHE1,IPCHE2,INFOS,IRTD)
  227. IF (IRTD.EQ.0) GOTO 9901
  228. *
  229. * Verification du MCHAML de contraintes
  230. *
  231. if(lnomid(4).ne.0) then
  232. nomid=lnomid(4)
  233. segact nomid
  234. mocont=nomid
  235. nstr=lesobl(/2)
  236. nfac=lesfac(/2)
  237. lsupco=.false.
  238. else
  239. lsupco=.true.
  240. CALL IDCONT(IMODEL,IFOUR,MOCONT,NSTR,NFAC)
  241. endif
  242. *
  243. NBTYPE=1
  244. SEGINI NOTYPE
  245. TYPE(1)='REAL*8'
  246. MOTYPE=NOTYPE
  247. CALL KOMCHA(IPCHE1,IPMAIL,CONM,MOCONT,MOTYPE,
  248. . 1,INFOS,3,IVACON)
  249. SEGSUP NOTYPE
  250. IF (IERR.NE.0) GOTO 9910
  251. *
  252. IF (ISUPCO.EQ.1) THEN
  253. CALL VALCHE(IVACON,NSTRS,IPMIN1,IPPORE,MOCONT,MELE)
  254. ENDIF
  255. *
  256. * Verification du MCHAML de variables internes
  257. *
  258. if(lnomid(10).ne.0) then
  259. nomid=lnomid(10)
  260. segact nomid
  261. movari=nomid
  262. nvari=lesobl(/2)
  263. nfac=lesfac(/2)
  264. lsupva=.false.
  265. else
  266. lsupva=.true.
  267. CALL IDVARI(MFR,IPMOD1,MOVARI,NVARI,NFAC)
  268. endif
  269. *
  270. NBTYPE=1
  271. SEGINI NOTYPE
  272. TYPE(1)='REAL*8'
  273. MOTYPE=NOTYPE
  274. CALL KOMCHA(IPCHE2,IPMAIL,CONM,MOVARI,MOTYPE,
  275. . 1,INFOS,3,IVAVAR)
  276. SEGSUP NOTYPE
  277. IF(IERR.NE.0)GOTO 9920
  278. *
  279. IF (ISUPVA.EQ.1) THEN
  280. CALL VALCHE(IVAVAR,NVARI,IPMIN1,IPPORE,MOVARI,MELE)
  281. ENDIF
  282. *
  283. * Creation du tableau INFOS
  284. *
  285. CALL IDENT(IPMAIL,CONM,IPCHE1,IPCHE3,INFOS,IRTD)
  286. IF (IRTD.EQ.0) GOTO 9920
  287. *
  288. * Verification du MCHAML de materiau
  289. *
  290. NBROBL=0
  291. NBRFAC=0
  292. MOMATR=0
  293. *
  294. IF (INPLAS.EQ.1) THEN
  295. NBROBL=2
  296. SEGINI NOMID
  297. MOMATR=NOMID
  298. LESOBL(1)='YOUN'
  299. LESOBL(2)='SIGY'
  300. *
  301. NBTYPE=1
  302. SEGINI NOTYPE
  303. MOTYPE=NOTYPE
  304. TYPE(1)='REAL*8'
  305. ELSE IF (INPLAS.EQ.4) THEN
  306. NBROBL=3
  307. SEGINI NOMID
  308. MOMATR=NOMID
  309. LESOBL(1)='YOUN'
  310. LESOBL(2)='SIGY'
  311. LESOBL(3)='H '
  312. *
  313. NBTYPE=1
  314. SEGINI NOTYPE
  315. MOTYPE=NOTYPE
  316. TYPE(1)='REAL*8'
  317. ELSE IF (INPLAS.EQ.5) THEN
  318. NBROBL=2
  319. SEGINI NOMID
  320. MOMATR=NOMID
  321. LESOBL(1)='YOUN'
  322. LESOBL(2)='TRAC'
  323. *
  324. NBTYPE=2
  325. SEGINI NOTYPE
  326. MOTYPE=NOTYPE
  327. TYPE(1)='REAL*8'
  328. TYPE(2)='POINTEUREVOLUTIO'
  329. ELSE
  330. NBROBL=1
  331. SEGINI NOMID
  332. MOMATR=NOMID
  333. LESOBL(1)='YOUN'
  334. *
  335. NBTYPE=1
  336. SEGINI NOTYPE
  337. MOTYPE=NOTYPE
  338. TYPE(1)='REAL*8'
  339. ENDIF
  340. *
  341. NMATR=NBROBL
  342. NMATF=NBRFAC
  343. NMATT=NMATR+NMATF
  344. CALL KOMCHA(IPCHE3,IPMAIL,CONM,MOMATR,MOTYPE,
  345. . 1,INFOS,3,IVAMAT)
  346. SEGSUP NOTYPE
  347. IF (IERR.NE.0) GOTO 9930
  348.  
  349. IF (ISUPMA.EQ.1) THEN
  350. CALL VALCHE(IVAMAT,NMATT,IPMIN1,IPPORE,MOMATR,MELE)
  351. IF(IERR.NE.0)THEN
  352. ISUPMA=0
  353. GOTO 9930
  354. ENDIF
  355. ENDIF
  356. *
  357. * Verification du MCHAML de caracteristiques
  358. *
  359. NBROBL=0
  360. NBRFAC=0
  361. MOCARA=0
  362. IVECT=0
  363. IF (MFR.EQ.3.OR.MFR.EQ.9) THEN
  364. NBROBL=2
  365. SEGINI NOMID
  366. MOCARA=NOMID
  367. LESOBL(1)='EPAI'
  368. LESOBL(2)='CALF'
  369. *
  370. NBTYPE=1
  371. SEGINI NOTYPE
  372. MOTYPE=NOTYPE
  373. TYPE(1)='REAL*8'
  374. ENDIF
  375. *
  376. * POUR LES POUTRES
  377. *
  378. IF (MFR.EQ.7 ) THEN
  379. NBROBL=4
  380. NBRFAC=8
  381. SEGINI NOMID
  382. MOCARA=NOMID
  383. LESOBL(1)='TORS'
  384. LESOBL(2)='INRY'
  385. LESOBL(3)='INRZ'
  386. LESOBL(4)='SECT'
  387. LESFAC(1)='SECY'
  388. LESFAC(2)='SECZ'
  389. LESFAC(3)='DX '
  390. LESFAC(4)='DY '
  391. LESFAC(5)='DZ '
  392. LESFAC(6)='VX'
  393. LESFAC(6)='VY'
  394. LESFAC(6)='VZ'
  395. IVECT=1
  396. *
  397. NBTYPE=12
  398. SEGINI NOTYPE
  399. MOTYPE=NOTYPE
  400. TYPE(1)='REAL*8'
  401. TYPE(2)='REAL*8'
  402. TYPE(3)='REAL*8'
  403. TYPE(4)='REAL*8'
  404. TYPE(5)='REAL*8'
  405. TYPE(6)='REAL*8'
  406. TYPE(7)='REAL*8'
  407. TYPE(8)='REAL*8'
  408. TYPE(9)='REAL*8'
  409. TYPE(10)='REAL*8'
  410. TYPE(11)='REAL*8'
  411. TYPE(12)='REAL*8'
  412. *
  413. * POUR LES TUYAUX
  414. *
  415. ELSE IF (MFR.EQ.13) THEN
  416. NBROBL=2
  417. NBRFAC=11
  418. SEGINI NOMID
  419. MOCARA=NOMID
  420. LESOBL(1)='EPAI'
  421. LESOBL(2)='RAYO'
  422. LESFAC(1)='RACO'
  423. LESFAC(2)='PRES'
  424. LESFAC(3)='CISA'
  425. LESFAC(4)='CFFX'
  426. LESFAC(5)='CFMX'
  427. LESFAC(6)='CFMY'
  428. LESFAC(7)='CFMZ'
  429. LESFAC(8)='CFPR'
  430. LESFAC(9)='VX'
  431. LESFAC(10)='VY'
  432. LESFAC(11)='VZ'
  433. IVECT=1
  434. *
  435. NBTYPE=13
  436. SEGINI NOTYPE
  437. MOTYPE=NOTYPE
  438. TYPE(1)='REAL*8'
  439. TYPE(2)='REAL*8'
  440. TYPE(3)='REAL*8'
  441. TYPE(4)='REAL*8'
  442. TYPE(5)='REAL*8'
  443. TYPE(6)='REAL*8'
  444. TYPE(7)='REAL*8'
  445. TYPE(8)='REAL*8'
  446. TYPE(9)='REAL*8'
  447. TYPE(10)='REAL*8'
  448. TYPE(11)='REAL*8'
  449. TYPE(12)='REAL*8'
  450. TYPE(13)='REAL*8'
  451. ENDIF
  452. *
  453. IF (MOCARA.NE.0) THEN
  454. CALL KOMCHA(IPCHE3,IPMAIL,CONM,MOCARA,MOTYPE,
  455. . 1,INFOS,3,IVACAR)
  456. SEGSUP NOTYPE
  457. IF (IERR.NE.0) GOTO 9940
  458. *
  459. ENDIF
  460. NCARA=NBROBL
  461. NCARF=NBRFAC
  462. NCARR=NCARA+NCARF
  463. IF (ISUPMA.EQ.1.AND.MOCARA.NE.0) THEN
  464. CALL VALCHE(IVACAR,NCARR,IPMIN1,IPPORE,MOCARA,MELE)
  465. IF(IERR.NE.0)THEN
  466. ISUPMA=0
  467. GOTO 9940
  468. ENDIF
  469. ENDIF
  470. ICARA=NCARR
  471. ** IF((MFR.EQ.7.OR.MFR.EQ.13).AND.IVECT.EQ.1)ICARA=NCARR+IDIM-1
  472. *
  473. * Creation du MCHAML de la sous zone
  474. *
  475. N2=1
  476. SEGINI MCHAML
  477. ICHAML(ISOUS)=MCHAML
  478. NOMCHE(1)='SCAL'
  479. TYPCHE(1)='REAL*8'
  480. *
  481. * Creation du MELVAL de la composante SCAL
  482. *
  483. N1PTEL=NBG
  484. N1EL=NBELEM
  485. N2PTEL=0
  486. N2EL=0
  487. SEGINI MELVAL
  488. IELVAL(1)=MELVAL
  489. IPMELV=MELVAL
  490. *
  491. * Mise a 0 des variables du COMMON NECOU si besoin
  492. * Les bonnes valeurs sont attribuees selon le materiaux
  493. * ( initialisation selon les cas )
  494. *
  495. IF(INPLAS.EQ.2) GO TO 681
  496. IFOURB=IFOUR
  497. NCOURB=0
  498. IPLAST=0
  499. IMAPLA=1
  500. IT=1
  501. ISOTRO=0
  502. ITYP=0
  503. *
  504. * Correspondance MFR,IFOUR et ITYP faite dans ECOINC
  505. *
  506. * Correspondance MFR,IFOUR et ITYP
  507. * a completer
  508. *
  509. IF(MFR.EQ.1.AND.IFOUR.EQ.-2) ITYP=6
  510. IF(MFR.EQ.1.AND.IFOUR.GE.-1) ITYP=1
  511. IF(MFR.EQ.3) ITYP=2
  512. IF(MFR.EQ.5) ITYP=13
  513. IF(MFR.EQ.7) ITYP=11
  514. IF(MFR.EQ.9) ITYP= 2
  515. *
  516. * cas du coq4 - on ne travaille que sur les 6 eres composantes
  517. *
  518. IF(MFR.EQ.13) ITYP=12
  519. IF(MFR.EQ.25) ITYP=3
  520. IF(MFR.EQ.27) ITYP=4
  521. *
  522. IFLUAG=0
  523. ICINE=0
  524. ITHER=0
  525. IFLUPL=0
  526. ICYCL=0
  527. IBI=0
  528. JFLUAG=0
  529. KFLUAG=0
  530. LFLUAG=0
  531. IRELAX=0
  532. JNTRIN=0
  533. MFLUAG=0
  534. JSOUFL=0
  535. JGRDEF=0
  536. LTRAC=600
  537. *
  538. 681 CONTINUE
  539. *
  540. NCXMAT=NMATT
  541. IF(INPLAS.EQ.5)NCXMAT=NMATT+3
  542. SEGINI WRK0,WRK1,WRK2,WRK3
  543. IF(MFR.EQ.7.OR.MFR.EQ.13) THEN
  544. NBBB=NBNN
  545. SEGINI WRK4
  546. SEGINI WRK6
  547. ENDIF
  548. *
  549. * Boucle sur les elements
  550. *
  551. DO 3004 IB=1,NBELEM
  552. *
  553. * Boucle sur les points de gauss
  554. *
  555. DO 5004 IGAU=1,N1PTEL
  556. *
  557. * On remplit les differentes quantites necessaires a
  558. * ECOULE
  559. *
  560. * Contraintes initiales
  561. *
  562. MPTVAL=IVACON
  563. DO 4004 ICOMP=1,NSTR
  564. MELVAL=IVAL(ICOMP)
  565. IGMN=MIN(IGAU,VELCHE(/1))
  566. IBMN=MIN(IB ,VELCHE(/2))
  567. SIG0(ICOMP)=VELCHE(IGMN,IBMN)
  568. 4004 CONTINUE
  569. *
  570. * Variables internes initiales
  571. *
  572. MPTVAL=IVAVAR
  573. DO 4005 ICOMP=1,NVARI
  574. MELVAL=IVAL(ICOMP)
  575. IGMN=MIN(IGAU,VELCHE(/1))
  576. IBMN=MIN(IB ,VELCHE(/2))
  577. VAR0(ICOMP)=VELCHE(IGMN,IBMN)
  578. 4005 CONTINUE
  579. IEPS=1
  580. EPSPL=VAR0(IEPS)
  581. *
  582. * Les constantes du materiaux
  583. *
  584. MPTVAL=IVAMAT
  585. IF(INPLAS.EQ.5)THEN
  586. MELVAL=IVAL(1)
  587. IBMN=MIN(IB,VELCHE(/2))
  588. IGMN=MIN(IGAU,VELCHE(/1))
  589. XMAT(1)=VELCHE(IGMN,IBMN)
  590. MELVAL=IVAL(2)
  591. IBMN=MIN(IB,IELCHE(/2))
  592. IGMN=MIN(IGAU,IELCHE(/1))
  593. MEVOLL = IELCHE(IGMN,IBMN)
  594. *--------
  595. SEGACT MEVOLL
  596. KEVOLL=IEVOLL(1)
  597. SEGACT KEVOLL
  598. MLREEL = IPROGY
  599. SEGACT MLREEL
  600. LTR2 = PROG(/1)
  601. SEGDES MLREEL,KEVOLL,MEVOLL
  602. IF(LTR2.GT.LTRAC) THEN
  603. LTRAC = LTR2
  604. SEGADJ WRK0
  605. ENDIF
  606. XMAT(5)=MEVOLL
  607. ELSE
  608. DO 4007 ICOMP=1,NMATR
  609. MELVAL=IVAL(ICOMP)
  610. IF(TYVAL(ICOMP)(1:8).NE.'POINTEUR')THEN
  611. IBMN=MIN(IB,VELCHE(/2))
  612. IGMN=MIN(IGAU,VELCHE(/1))
  613. XMAT(ICOMP)=VELCHE(IGMN,IBMN)
  614. ELSE
  615. IBMN=MIN(IB,IELCHE(/2))
  616. IGMN=MIN(IGAU,IELCHE(/1))
  617. * XMAT(ICOMP)=IELCHE(IGMN,IBMN)
  618. MEVOLL = IELCHE(IGMN,IBMN)
  619. SEGACT MEVOLL
  620. KEVOLL=IEVOLL(1)
  621. SEGACT KEVOLL
  622. MLREEL = IPROGY
  623. SEGACT MLREEL
  624. LTR2 = PROG(/1)
  625. SEGDES MLREEL,KEVOLL,MEVOLL
  626. IF(LTR2.GT.LTRAC) THEN
  627. LTRAC = LTR2
  628. SEGADJ WRK0
  629. ENDIF
  630. XMAT(5)=MEVOLL
  631. *---------------
  632. ENDIF
  633. 4007 CONTINUE
  634. ENDIF
  635. IYUNG=1
  636. ETANG=XMAT(IYUNG)
  637. *
  638. * Les caracteristiques si besoin
  639. *
  640. IF (ITYP.EQ.2) THEN
  641. ALFAH=1.
  642. IF(MOCARA.NE.0) THEN
  643. MPTVAL=IVACAR
  644. DO 6029 ICOMP=1,NCARR
  645. MELVAL=IVAL(ICOMP)
  646. IBMN=MIN(IB ,VELCHE(/2))
  647. XCAR(ICOMP)=VELCHE(1,IBMN)
  648. 6029 CONTINUE
  649. IALF=2
  650. ALFAH=XCAR(IALF)*XCAR(IALF)
  651. ENDIF
  652. *
  653. * On transforme les efforts en contraintes pour les
  654. * coques minces
  655. *
  656. CALL EFCONT(XCAR(1),0.D0,NSTRS,SIG0)
  657. IF (NVARI.EQ.NSTRS+1) THEN
  658. CALL EFCONT(XCAR(1),0.D0,NSTRS,VAR0(2))
  659. ENDIF
  660. ENDIF
  661. *
  662. * cas des tuyaux
  663. *
  664. IF (ITYP.EQ.12) THEN
  665. IF(MOCARA.NE.0) THEN
  666. MPTVAL=IVACAR
  667. DO 5129 ICOMP=1,5
  668. MELVAL=IVAL(ICOMP)
  669. IF (MELVAL.NE.0) THEN
  670. IGMN=MIN(IGAU,VELCHE(/1))
  671. IBMN=MIN(IB ,VELCHE(/2))
  672. XCAR(ICOMP)=VELCHE(IGMN,IBMN)
  673. ELSE
  674. XCAR(ICOMP)=0.D0
  675. ENDIF
  676. 5129 CONTINUE
  677. IF(IVECT.EQ.1) THEN
  678. DO 5130 ICOMP=6,NCARR
  679. MELVAL=IVAL(ICOMP)
  680. IF (MELVAL.NE.0) THEN
  681. IGMN=MIN(IGAU,VELCHE(/1))
  682. IBMN=MIN(IB ,VELCHE(/2))
  683. XCAR(ICOMP)=VELCHE(IGMN,IBMN)
  684. ELSE
  685. XCAR(ICOMP)=-1.D0
  686. ENDIF
  687. 5130 CONTINUE
  688. ELSE
  689. DO 5330 ICOMP=6,10
  690. MELVAL=IVAL(ICOMP)
  691. IF (MELVAL.NE.0) THEN
  692. IGMN=MIN(IGAU,VELCHE(/1))
  693. IBMN=MIN(IB ,VELCHE(/2))
  694. XCAR(ICOMP)=VELCHE(IGMN,IBMN)
  695. ELSE
  696. XCAR(ICOMP)=-1.D0
  697. ENDIF
  698. 5330 CONTINUE
  699. DO 5339 ICOMP=11,ICARA
  700. MELVAL=IVAL(ICOMP)
  701. IF (MELVAL.NE.0) THEN
  702. IGMN=MIN(IGAU,VELCHE(/1))
  703. IBMN=MIN(IB ,VELCHE(/2))
  704. XCAR(ICOMP)=VELCHE(IGMN,IBMN)
  705. ELSE
  706. XCAR(ICOMP)=0.D0
  707. ENDIF
  708. 5339 CONTINUE
  709. ENDIF
  710. *
  711. * REARRANGEMENT DU TABLEAU XCAR POUR QU'ON AI LA MEME ORDRE
  712. * QUE L'ANCIEN CHAMELEM
  713. *
  714. NWORK = 7
  715. DO 5349 IC=4,10
  716. WORK(IC-3)=XCAR(IC)
  717. 5349 CONTINUE
  718. IF(IDIM.EQ.2)THEN
  719. XCAR(4)=XCAR(ICARA-1)
  720. XCAR(5)=XCAR(ICARA)
  721. DO 5359 IC=1,NWORK
  722. XCAR(IC+5)=WORK(IC)
  723. 5359 CONTINUE
  724. ELSE IF(IDIM.EQ.3)THEN
  725. XCAR(4)=XCAR(ICARA-2)
  726. XCAR(5)=XCAR(ICARA-1)
  727. XCAR(6)=XCAR(ICARA)
  728. DO 5369 IC=1,NWORK
  729. XCAR(IC+6)=WORK(IC)
  730. 5369 CONTINUE
  731. ENDIF
  732. ENDIF
  733. ENDIF
  734. *
  735. * cas des poutres
  736. *
  737. IF (ITYP.EQ.11) THEN
  738. IF(MOCARA.NE.0) THEN
  739. MPTVAL=IVACAR
  740. IF(IVECT.EQ.1) THEN
  741. DO 6129 ICOMP=1,NCARR
  742. MELVAL=IVAL(ICOMP)
  743. IF (MELVAL.NE.0) THEN
  744. IGMN=MIN(IGAU,VELCHE(/1))
  745. IBMN=MIN(IB ,VELCHE(/2))
  746. XCAR(ICOMP)=VELCHE(IGMN,IBMN)
  747. ELSE
  748. XCAR(ICOMP)=0.D0
  749. ENDIF
  750. 6129 CONTINUE
  751. ELSE
  752. DO 6339 ICOMP=1,ICARA
  753. MELVAL=IVAL(ICOMP)
  754. IF (MELVAL.NE.0) THEN
  755. IGMN=MIN(IGAU,VELCHE(/1))
  756. IBMN=MIN(IB ,VELCHE(/2))
  757. XCAR(ICOMP)=VELCHE(IGMN,IBMN)
  758. ELSE
  759. XCAR(ICOMP)=0.D0
  760. ENDIF
  761. 6339 CONTINUE
  762. ENDIF
  763. *
  764. * REARRANGEMENT DU TABLEAU XCAR POUR QU'ON AI LA MEME ORDRE
  765. * QUE L'ANCIEN CHAMELEM
  766. *
  767. IF(IDIM.EQ.2)THEN
  768. VX=XCAR(ICARA-3)
  769. VY=XCAR(ICARA-2)
  770. XCAR(ICARA-3)=XCAR(ICARA-1)
  771. XCAR(ICARA-2)=XCAR(ICARA)
  772. XCAR(ICARA-1)=VX
  773. XCAR(ICARA)=VY
  774. ELSEIF(IDIM.EQ.3)THEN
  775. VX=XCAR(ICARA-5)
  776. VY=XCAR(ICARA-4)
  777. VZ=XCAR(ICARA-3)
  778. XCAR(ICARA-5)=XCAR(ICARA-2)
  779. XCAR(ICARA-4)=XCAR(ICARA-1)
  780. XCAR(ICARA-3)=XCAR(ICARA)
  781. XCAR(ICARA-2)=VX
  782. XCAR(ICARA-1)=VY
  783. XCAR(ICARA)=VZ
  784. ENDIF
  785. ENDIF
  786. ENDIF
  787. C
  788. IF(ITYP.EQ.11) THEN
  789. DIV(1)=1.D0/XCAR(4)
  790. DIV(2)=1.D0
  791. DIV(3)=1.D0
  792. DIV(4)=XCAR(5)/XCAR(1)
  793. DIV(5)=XCAR(6)/XCAR(2)
  794. DIV(6)=XCAR(7)/XCAR(3)
  795. IF(DIV(4).EQ.0.D0) DIV(4)=1.D-10/SQRT(XCAR(1)*XCAR(4))
  796. IF(DIV(5).EQ.0.D0) DIV(5)=1.D-10/SQRT(XCAR(2)*XCAR(4))
  797. IF(DIV(6).EQ.0.D0) DIV(6)=1.D-10/SQRT(XCAR(3)*XCAR(4))
  798. ENDIF
  799. C
  800. IF(ITYP.EQ.12) THEN
  801. EPAIS=XCAR(1)
  802. REXT =XCAR(2)
  803. RMOY =REXT-EPAIS*0.5D0
  804. RACO =XCAR(3)
  805. PRES =XCAR(4)
  806. CISA =XCAR(5)
  807. C
  808. GAM=1.D0
  809. IF(RACO.EQ.0.D0) GO TO 6429
  810. XLAM=RMOY*RMOY/EPAIS/RACO
  811. GAM=0.8888888888888889D0*(XLAM)**0.6666666666666667D0
  812. IF(GAM.LT.1.D0) GAM=1.D0
  813. 6429 CONTINUE
  814. C
  815. C NB 23/09/98
  816. C VALEURS PAR DEFAUT POUR LES CFFX CFMX CFMY
  817. C CFMZ CFPR ( COEFFICIENTS POUR CALCULER LES
  818. C CONTRAINTES DE MEMBRANE, TORSION, FLEXIONS
  819. C DANS LE PLAN, HORS PLAN ET CIRCONFERENTIELLE
  820. C DUE A LA PRESSION )
  821. C POUR L'INSTANT PAS DE CONTRAINTE CIRCONFERENTIELLE
  822. C DUE A LA PRESSION ON N'UTILISE DONC PAS DIV(7)
  823. C
  824. C
  825. DIV(1)=1.D0
  826. DIV(2)=1.D0
  827. DIV(3)=1.D0
  828. DIV(4)=R33
  829. DIV(5)=PI4*GAM
  830. DIV(6)=DIV(5)
  831. DIV(7)=0.D0
  832. C
  833. IF(IDIM.EQ.2) THEN
  834. PRES1=XCAR(6)
  835. CISA1=XCAR(7)
  836. IDEB1=8
  837. ELSE IF(IDIM.EQ.3) THEN
  838. PRES1=XCAR(7)
  839. CISA1=XCAR(8)
  840. IDEB1=9
  841. ENDIF
  842. C
  843. JDIV1=2
  844. DO 6529 ICOMP=IDEB1,ICARA
  845. JDIV1=JDIV1+1
  846. VCAR1=XCAR(ICOMP)
  847. IF (VCAR1.NE.-1.D0) DIV(JDIV1)=XCAR(ICOMP)
  848. 6529 CONTINUE
  849. C
  850. C NB 23/09/98
  851. C TRANSFERT DE CFFX DANS DIV(1) ET REMISE A
  852. C 1.D0 DE DIV(3)
  853. C
  854. DIV(1) = DIV(3)
  855. DIV(3)=1.D0
  856. C
  857. IF(IDIM.EQ.2) CISA=XCAR(7)
  858. IF(IDIM.EQ.3) CISA=XCAR(8)
  859. VX=XCAR(4)
  860. VY=XCAR(5)
  861. VZ=XCAR(6)
  862. CALL TUYCAR(XCAR,CISA,VX,VY,VZ,KERRE,1)
  863. DIV(1)=DIV(1)/XCAR(4)
  864. DIV(4)=DIV(4)*RMOY/XCAR(1)
  865. DIV(5)=DIV(5)*RMOY/XCAR(2)
  866. DIV(6)=DIV(6)*RMOY/XCAR(3)
  867. ENDIF
  868. *
  869. * On transforme les efforts en contraintes pour les
  870. * poutres et tuyaux
  871. *
  872. IF (ITYP.EQ.11.OR.ITYP.EQ.12) THEN
  873. DO 6629 ICOMP=1,NSTR
  874. SIG0(ICOMP)=SIG0(ICOMP)*DIV(ICOMP)
  875. 6629 CONTINUE
  876. ENDIF
  877. *______________________________________________________________________
  878. *
  879. * MATERIAU PUREMENT ELASTIQUE
  880. *_____________________________________________________________________
  881. *
  882. IF(INPLAS.EQ.0) THEN
  883. GO TO 510
  884. ENDIF
  885. *======================================================================
  886. *
  887. * NUMERO DES ETIQUETTES :
  888. *
  889. * 1 A 99 POUR LES MODELES DE PLASTICITE ( INDICE INPLAS )
  890. *
  891. *======================================================================
  892. *
  893. GOTO (1, 2,99, 4, 5,99, 7,99,99,99, 7, 7, 7,99,99,99,99,99,99,99,
  894. & 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,
  895. & 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,
  896. & 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99),INPLAS
  897. *
  898. 99 CONTINUE
  899. MOTERR(1:4)=NOMAC(INPLAS)
  900. MOTERR(5:12)=NOMFR(MFR)
  901. CALL ERREUR(269)
  902. SEGSUP MCHAML
  903. MELVAL=IPMELV
  904. SEGSUP MELVAL
  905. GOTO 9940
  906. *_______________________________________________________________________
  907. *
  908. * MODELE VON MISES ISOTROPE ASSOCIE ( D'APRES INCA )
  909. *_______________________________________________________________________
  910. *
  911. 1 CONTINUE
  912. *
  913. * Cas de la plasticite parfaite
  914. *
  915. NCOURB=2
  916. TRAC(1)=XMAT(2)
  917. TRAC(2)=0.D0
  918. TRAC(3)=XMAT(2)
  919. TRAC(4)=1.D0
  920. IF(XMAT(2).EQ.0.D0) THEN
  921. KERRE=33
  922. GO TO 510
  923. ENDIF
  924. *
  925. * On cherche si on est sur la surface de charge
  926. *
  927. IF(EPSPL.EQ.0.) GO TO 682
  928. SIGVM=VONMIS(SIG0,ITYP,ALFAH,COVNMS)
  929. IF(SIGVM.LT.PRECIS*TRAC(1)) GO TO 682
  930. ETANG=0.
  931. GOTO 682
  932. *
  933. 4 CONTINUE
  934. *
  935. * Cas de la plasticite cinematique bilineaire
  936. *
  937. ICINE=1
  938. NCOURB=2
  939. TRAC(1)=XMAT(2)
  940. TRAC(2)=0.D0
  941. TRAC(3)=XMAT(2)+XMAT(3)
  942. TRAC(4)=1.D0
  943. IF(XMAT(2).EQ.0.D0) THEN
  944. KERRE=33
  945. GO TO 510
  946. ENDIF
  947. *
  948. * On cherche si on est sur la surface de charge
  949. *
  950. IF(EPSPL.EQ.0.) GO TO 682
  951. ISPHER=2
  952. CALL AEQBPC(SIG0,SIG0,VAR0(ISPHER),1.D0,-1.D0,NSTRS)
  953. *
  954. SIGVM=VONMIS(SIG0,ITYP,ALFAH,COVNMS)
  955. IF(SIGVM.LT.PRECIS*TRAC(1)) GO TO 682
  956. H=TRAC(3)
  957. ETANG=ETANG*H/(ETANG+H)
  958. GOTO 682
  959. C
  960. 5 CONTINUE
  961. *
  962. * Cas de la plasticite isotrope ecrouissable
  963. *
  964. * On recupere la courbe de traction
  965. *
  966. CALL COTRAC(WRK0,WRK2,NCOURB,KERRE)
  967. IF(KERRE.GT.0) GO TO 510
  968. IF(EPSPL.EQ.0.) GO TO 682
  969. LSIG=NCOURB
  970. SEGINI WRK5
  971. *
  972. DO 7000 IZ=1,LSIG
  973. SIG(IZ)=TRAC(2*(IZ-1)+1)
  974. EPS(IZ)=TRAC(2*IZ)
  975. 7000 CONTINUE
  976. *
  977. CALL TRACTI(SELAS,EPSPL,SIG,EPS,NCOURB,2,IBI)
  978. IF(IBI.NE.0) THEN
  979. KERRE=75
  980. GO TO 510
  981. ENDIF
  982. SIGVM=VONMIS(SIG0,ITYP,ALFAH,COVNMS)
  983. *
  984. IF(SIGVM.LT.PRECIS*SELAS) GO TO 7001
  985. CALL TRACTI(H,EPSPL,SIG,EPS,NCOURB,1,IBI)
  986. IF(IBI.NE.0) THEN
  987. KERRE=75
  988. GO TO 510
  989. ENDIF
  990. ETANG=ETANG*H/(ETANG+H)
  991. *
  992. 7001 CONTINUE
  993. SEGSUP WRK5
  994. GO TO 682
  995. *
  996. 7 CONTINUE
  997. *
  998. * Cas du modele CHABOCHE
  999. *
  1000. ICINE=1
  1001. IMAPLA=4
  1002. GOTO 682
  1003. *
  1004. 682 CONTINUE
  1005. DO 675 IC=1,NCARR
  1006. WORK(IC)=XCAR(IC)
  1007. 675 CONTINUE
  1008. GOTO 510
  1009. *
  1010. * Modele LINESPRING
  1011. *
  1012. 2 CONTINUE
  1013. GOTO 510
  1014. *
  1015. 510 CONTINUE
  1016. *
  1017. *
  1018. * Remplissage du segment contenant les contraintes a la fin
  1019. *
  1020. IF (KERRE.EQ.0) THEN
  1021. MELVAL=IPMELV
  1022. VELCHE(IGAU,IB)=ETANG
  1023. *
  1024. * Impression des message d'erreurs
  1025. *
  1026. ELSE IF(KERRE.NE.0) THEN
  1027. IRT0=0
  1028. IRT6=0
  1029. IRT7=0
  1030. INTERR(1)=IB
  1031. INTERR(2)=IGAU
  1032. MOTERR(1:4)=NOMTP(MELE)
  1033. IF(KERRE.EQ.1) THEN
  1034. CALL ERREUR(267)
  1035. ELSE IF(KERRE.EQ.2) THEN
  1036. CALL ERREUR(268)
  1037. ELSE IF(KERRE.EQ.30) THEN
  1038. CALL ERREUR(270)
  1039. ELSE IF(KERRE.EQ.31) THEN
  1040. CALL ERREUR(271)
  1041. ELSE IF(KERRE.EQ.32) THEN
  1042. CALL ERREUR(272)
  1043. ELSE IF(KERRE.EQ.33) THEN
  1044. CALL ERREUR(273)
  1045. ELSE IF(KERRE.EQ.34) THEN
  1046. CALL ERREUR(325)
  1047. ELSE IF(KERRE.EQ.35) THEN
  1048. CALL ERREUR(331)
  1049. ELSE IF(KERRE.EQ.36) THEN
  1050. CALL ERREUR(330)
  1051. ELSE IF(KERRE.EQ.37) THEN
  1052. CALL ERREUR(354)
  1053. ELSE IF(KERRE.EQ.21) THEN
  1054. CALL ERREUR(276)
  1055. ELSE IF(KERRE.EQ.22) THEN
  1056. CALL ERREUR(275)
  1057. ELSE IF(KERRE.EQ.75) THEN
  1058. CALL ERREUR(876)
  1059. ENDIF
  1060. GOTO 444
  1061. ENDIF
  1062. *
  1063. 5004 CONTINUE
  1064. 3004 CONTINUE
  1065. *
  1066. 444 CONTINUE
  1067. SEGSUP WRK0,WRK1,WRK2,WRK3
  1068. IF(MFR.EQ.7.OR.MFR.EQ.13) THEN
  1069. SEGSUP WRK4,WRK6
  1070. ENDIF
  1071. *
  1072. IF (ISUPCO.EQ.1) THEN
  1073. CALL DTMVAL (IVACON,3)
  1074. ELSE
  1075. CALL DTMVAL (IVACON,1)
  1076. ENDIF
  1077. *
  1078. IF (ISUPVA.EQ.1) THEN
  1079. CALL DTMVAL (IVAVAR,3)
  1080. ELSE
  1081. CALL DTMVAL (IVAVAR,1)
  1082. ENDIF
  1083. *
  1084. IF (ISUPMA.EQ.1) THEN
  1085. CALL DTMVAL (IVAMAT,3)
  1086. ELSE
  1087. CALL DTMVAL (IVAMAT,1)
  1088. ENDIF
  1089. *
  1090. IF (ISUPMA.EQ.1) THEN
  1091. CALL DTMVAL (IVACAR,3)
  1092. ELSE
  1093. CALL DTMVAL (IVACAR,1)
  1094. ENDIF
  1095. *
  1096. SEGDES,MINTE
  1097. SEGDES MELEME
  1098. NOMID=MOCONT
  1099. if(lsupco)SEGSUP NOMID
  1100. NOMID=MOVARI
  1101. if(lsupva)SEGSUP NOMID
  1102. NOMID=MOMATR
  1103. SEGSUP NOMID
  1104. IF (MOCARA.NE.0) THEN
  1105. NOMID=MOCARA
  1106. SEGSUP NOMID
  1107. ENDIF
  1108. * INFO=IPINF
  1109. * SEGSUP INFO
  1110. SEGDES IMODEL
  1111. *
  1112. IF(KERRE.NE.0)THEN
  1113. SEGSUP MCHAML
  1114. MELVAL=IPMELV
  1115. SEGSUP MELVAL
  1116. GOTO 888
  1117. ELSE
  1118. SEGDES MCHAML
  1119. MELVAL=IPMELV
  1120. SEGDES MELVAL
  1121. ENDIF
  1122. *
  1123. 500 CONTINUE
  1124. *
  1125. 888 CONTINUE
  1126. SEGDES MMODEL
  1127. IF(KERRE.NE.0) THEN
  1128. IRET=0
  1129. SEGSUP MCHELM
  1130. ELSE
  1131. IRET=1
  1132. SEGDES MCHELM
  1133. ENDIF
  1134. C
  1135. RETURN
  1136. *______________________________________________________________________
  1137. *
  1138. * Erreurs dans une sous zone desactivation et retour
  1139. *______________________________________________________________________
  1140. *
  1141. 9940 CONTINUE
  1142. IF (ISUPMA.EQ.1) THEN
  1143. CALL DTMVAL (IVACAR,3)
  1144. ELSE
  1145. CALL DTMVAL (IVACAR,1)
  1146. ENDIF
  1147. NOMID=MOCARA
  1148. IF(NOMID.NE.0)SEGSUP NOMID
  1149. *
  1150. 9930 CONTINUE
  1151. IF (ISUPMA.EQ.1) THEN
  1152. CALL DTMVAL (IVAMAT,3)
  1153. ELSE
  1154. CALL DTMVAL (IVAMAT,1)
  1155. ENDIF
  1156. NOMID=MOMATR
  1157. IF(NOMID.NE.0)SEGSUP NOMID
  1158. *
  1159. 9920 CONTINUE
  1160. IF (ISUPVA.EQ.1) THEN
  1161. CALL DTMVAL (IVAVAR,3)
  1162. ELSE
  1163. CALL DTMVAL (IVAVAR,1)
  1164. ENDIF
  1165. NOMID=MOVARI
  1166. IF(lsupva.and.NOMID.NE.0)SEGSUP NOMID
  1167. *
  1168. 9910 CONTINUE
  1169. IF (ISUPCO.EQ.1) THEN
  1170. CALL DTMVAL (IVACON,3)
  1171. ELSE
  1172. CALL DTMVAL (IVACON,1)
  1173. ENDIF
  1174. NOMID=MOCONT
  1175. IF(lsupco.and.NOMID.NE.0)SEGSUP NOMID
  1176. *
  1177. 9901 CONTINUE
  1178. SEGDES,MELEME,MINTE
  1179. 9900 CONTINUE
  1180. SEGDES IMODEL,MMODEL
  1181. SEGSUP MCHELM
  1182. IRET = 0
  1183.  
  1184. RETURN
  1185. END
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  

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