Télécharger motana.eso

Retour à la liste

Numérotation des lignes :

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

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