Télécharger motana.eso

Retour à la liste

Numérotation des lignes :

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

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