Télécharger motana.eso

Retour à la liste

Numérotation des lignes :

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

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