Télécharger rigi4.eso

Retour à la liste

Numérotation des lignes :

rigi4
  1. C RIGI4 SOURCE OF166741 24/10/07 21:15:45 12016
  2.  
  3. *---------------------------------------------------------------------*
  4. * ________________________ *
  5. * | | *
  6. * | CALCUL DE LA RIGIDITE | *
  7. * |________________________| *
  8. * *
  9. * poutre,tuyau,linespring,tuyau fissure,barre,homogeneise,joint 3D, *
  10. * cerce, tuyo,joints 2D, litu,zone cohesives *
  11. * *
  12. *---------------------------------------------------------------------*
  13. * *
  14. * ENTREES : *
  15. * ________ *
  16. * *
  17. * MATE Numero du materiau *
  18. * MELE Numero de l'element fini *
  19. * IPMAIL Pointeur sur un segment MELEME *
  20. * IPMINT Pointeur sur un segment MINTE *
  21. * NBPGAU Nombre de point d'integration pour la rigidite *
  22. * LRE Nombre de ddl dans la matrice de rigidite *
  23. * NSTRS Nombre de composante de contraintes/deformations *
  24. * IVAMAT Pointeur sur un segment MPTVAL pour le materiau ou *
  25. * pour une matrice de hooke *
  26. * IVACAR Pointeur sur un segment MPTVAL pour les caracteri- *
  27. * stiques *
  28. * IVECT FLAG INDIQUANT SI ON A ENTRE UN VECTEUR LOCAL *
  29. * CMATE Nom du materiau *
  30. * MFR Numero de la formulation element fini *
  31. * NBGMAT Taille maxi des melval du materiau (pt de gauss) *
  32. * NELMAT Taille maxi des melval du materiau (No d'element) *
  33. * IMAT (2 il y a une matrice de HOOKE,1 non ) *
  34. * NMATT Nombre de composantes de materiau (IMAT=1) *
  35. * NCARR Nombre de caracteristiques geometriques *
  36. * ISOUS NUMERO DE LA SOUS-ZONE *
  37. * LW Dimension du tableau de travail *
  38. * IPORE nombre de fonctions de forme
  39. * *
  40. * *
  41. * SORTIES : *
  42. * ________ *
  43. * *
  44. * IPMATR pointeur sur la rigidite de la sous-zone *
  45. * *
  46. *---------------------------------------------------------------------*
  47.  
  48. SUBROUTINE RIGI4(MATE,MELE,IPMAIL,IPMINT,NBPGAU,LRE,NSTRS,
  49. & IVAMAT,IVACAR,IVECT,CMATE,MFR,NBGMAT,NELMAT,IMAT,LHOOK,
  50. & NMATT,NCARR,ISOUS,LW,IPORE,IPMATR,IIPDPG)
  51.  
  52. IMPLICIT INTEGER(I-N)
  53. IMPLICIT REAL*8(A-H,O-Z)
  54.  
  55. -INC PPARAM
  56. -INC CCOPTIO
  57. -INC CCHAMP
  58. -INC CCREEL
  59.  
  60. -INC SMCHAML
  61. -INC SMINTE
  62. -INC SMELEME
  63. -INC SMRIGID
  64. -INC SMMODEL
  65. -INC SMCOORD
  66. -INC SMLREEL
  67. -INC SMLMOTS
  68.  
  69. SEGMENT WRK1
  70. REAL*8 DDHOOK(NSTRS,NSTRS) ,DDHOMU(NSTRS,NSTRS)
  71. REAL*8 REL(LRE,LRE) , XE(3,NBBB)
  72. ENDSEGMENT
  73.  
  74. SEGMENT WRK2
  75. REAL*8 SHPWRK(6,NBNO) ,BGENE(NSTRS,LRE)
  76. ENDSEGMENT
  77.  
  78. SEGMENT WRK3
  79. REAL*8 WORK(LW)
  80. ENDSEGMENT
  81.  
  82. SEGMENT WRK4
  83. c cccccc
  84. REAL*8 BPSS(3,3),XEL(3,NBBB),rell(lre,lre),XPA(IDIM,IDIM)
  85. REAL*8 XPB(IDIM,IDIM)
  86. c cccccc
  87. ENDSEGMENT
  88.  
  89. SEGMENT WRK5
  90. REAL*8 XGENE(NSTN,LRN)
  91. ENDSEGMENT
  92.  
  93. SEGMENT WRK6
  94. REAL*8 PSS(3,3)
  95. ENDSEGMENT
  96.  
  97. SEGMENT WRK7
  98. REAL*8 PROPEL(14)
  99. REAL*8 OUT(5)
  100. REAL*8 WORK1(24*24)
  101. ENDSEGMENT
  102.  
  103. SEGMENT,MVELCH
  104. REAL*8 VALMAT(NV1)
  105. ENDSEGMENT
  106.  
  107. SEGMENT MPTVAL
  108. INTEGER IPOS(NS) ,NSOF(NS)
  109. INTEGER IVAL(NCOSOU)
  110. CHARACTER*16 TYVAL(NCOSOU)
  111. ENDSEGMENT
  112.  
  113. CHARACTER*4 lesinc(7),lesdua(7)
  114. DATA lesinc/'UX','UY','UZ','RX','RY','RZ','UR'/
  115. DATA lesdua/'FX','FY','FZ','MX','MY','MZ','FR'/
  116. DATA X577/.577350269189626D0/
  117. DIMENSION CRIGI(12),CMASS(12)
  118. CHARACTER*8 CMATE
  119.  
  120. MELEME=IPMAIL
  121. NBNN=NUM(/1)
  122. NBELEM=NUM(/2)
  123.  
  124. NV1=NMATT
  125. SEGINI,MVELCH
  126.  
  127. XMATRI=IPMATR
  128. * NLIGRP=LRE
  129. * NLIGRD=LRE
  130.  
  131. C Introduction du point autour duquel se fait le mouvement
  132. C de la section en defo plane generalisee
  133. C IIPDPG = numero du noeud/point support si defini pour le modele
  134. C IIPDPG > 0 si prise en compte du point support
  135. C <- Ici test equivalent a IF (IFOUR.EQ.-3)THEN
  136. IF (IIPDPG.GT.0) THEN
  137. IREF=(IIPDPG-1)*(IDIM+1)
  138. XDPGE=XCOOR(IREF+1)
  139. YDPGE=XCOOR(IREF+2)
  140. ELSE
  141. XDPGE=0.D0
  142. YDPGE=0.D0
  143. ENDIF
  144. *
  145. NHRM=NIFOUR
  146. *
  147. MINTE=IPMINT
  148. IRTD=1
  149.  
  150. * cas cmate 'STATIQUE'
  151. IF (mfr.eq.28) THEN
  152. jgn = 4
  153. if (ifour.eq.2) then
  154. jgm = 6
  155. segini mlmots
  156. iinc = mlmots
  157. do igm = 1,jgm
  158. mots(igm) = lesinc(igm)
  159. enddo
  160. segini mlmots
  161. idua = mlmots
  162. do igm= 1,jgm
  163. mots(igm) = lesdua(igm)
  164. enddo
  165. else if (ifour.lt.0) then
  166. jgm = 4
  167. segini mlmots
  168. iinc = mlmots
  169. mots(1) = lesinc(1)
  170. mots(2) = lesinc(2)
  171. mots(3) = lesinc(4)
  172. mots(4) = lesinc(5)
  173. segini mlmots
  174. idua = mlmots
  175. mots(1) = lesdua(1)
  176. mots(2) = lesdua(2)
  177. mots(3) = lesdua(4)
  178. mots(4) = lesdua(5)
  179. else if (ifour.eq.0) then
  180. jgm = 3
  181. segini mlmots
  182. iinc = mlmots
  183. mots(1) = lesinc(7)
  184. mots(2) = lesinc(3)
  185. mots(3) = lesinc(6)
  186. segini mlmots
  187. idua = mlmots
  188. mots(1) = lesdua(7)
  189. mots(2) = lesdua(3)
  190. mots(3) = lesdua(6)
  191. else if (ifour.eq.1) then
  192. * a faire
  193. endif
  194. ENDIF
  195.  
  196. C_______________________________________________________________________
  197. C
  198. C NUMERO DES ETIQUETTES :
  199. C ETIQUETTES DE 1 A 98 POUR TRAITEMENT SPECIFIQUE A L ELEMENT
  200. C DANS LA ZONE SPECIFIQUE A CHAQUE ELEMENT COMMENCANT PAR :
  201. C 5 CONTINUE
  202. C ELEMENT 5 ETIQUETTES 1005 2005 3005 4005 ...
  203. C 44 CONTINUE
  204. C ELEMENT 44 ETIQUETTES 1044 2044 3044 4044 ...
  205. C_______________________________________________________________________
  206. C
  207. IF (MELE.LE.100)
  208. * CABL SEG2 SEG3 TRI3 TRI4 TRI6 TRI7 QUA4 QUA5 QUA8 QUA9
  209. & GOTO ( 99, 2, 99, 99, 99, 99, 99, 99, 99, 99, 99
  210. * RAC2 RAC3 CUB8 CU20 PRI6 PR15 LIA3 LIA4 LIA6 LIA8 MULT
  211. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  212. * TET4 TE10 PYR5 PY13 COQ3 DKT POUT LISP FAC3 FAC4 FAC6
  213. & , 99, 99, 99, 99, 99, 99, 29, 30, 99, 99, 99
  214. * FAC8 LTR3 LQU4 LCU8 LPR6 LTE4 LPY5 COQ8 TUYA TUFI COQ2
  215. & , 99, 99, 99, 99, 99, 99, 99, 99, 29, 43, 99
  216. * POI1 BARR RACO LSU2 COQ4 LISM COF3 RES2 LSU3 LSU4 LICO
  217. & , 45, 46, 99, 99, 99, 30, 99, 99, 99, 99, 99
  218. * COQ6 CVS2 CVS3 CVT3 CVT6 CVQ4 CVQ8 THP5 TH13 THP6 TH15
  219. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  220. * THC8 TH20 ICT3 ICQ4 ICT6 ICQ8 ICC8 ICT4 ICP6 IC20 IC10
  221. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  222. * IC15 TRIP QUAP CUBP TETP PRIP TIMO JOI2 JOI3 JOT3 JOI4
  223. & , 99, 99, 99, 99, 99, 99, 29, 85, 86, 87, 88
  224. * JOI6 JOI8 LISC TRIH DST LIC4 CERC TUYO LSE2 LITU HYT3
  225. & , 99, 99, 99, 92, 99, 99, 46, 96, 29, 29, 99
  226. * HYQ4
  227. & , 99),MELE
  228. IF (MELE.LE.200)
  229. * HYT4 HYP6 HYC8 TRIS QUAS POIS FOR3 JOP3 JOP6 JOP8
  230. & GOTO ( 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  231. * POL3 POL4 POL5 POL6 POL7 POL8 POL9 PO10 PO11 PO12 PO13
  232. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  233. * PO14 BAR3 BAEX LIA2 QUAH CUBH ROT3 SEF2 TRF3 QUF4 CUF8
  234. & , 99, 46, 124, 125, 126, 127, 99, 99, 99, 99, 99
  235. * PRF6 TEF4 PYF5 MSE3 MTR6 MQU9 MC27 MP18 MT10 MP14 SEF3
  236. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  237. * TRF7 QUF9 CF27 PF21 TF15 PF19 SEG6 TR21 QU36 C216 P126
  238. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  239. * TE56 PY91 TRH6 ???? ???? ???? ???? ???? ???? ???? ????
  240. & , 99, 99, 92, 51, 51, 51, 51, 51, 51, 51, 51
  241. * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????
  242. & , 51, 168, 169, 170, 171, 172, 51, 51, 51, 51, 51
  243. * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????
  244. & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51
  245. * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????
  246. & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51
  247. * ???? ????
  248. & , 51, 51),MELE-100
  249. IF (MELE.LE.300)
  250. * ???? ???? ???? ???? ???? ???? ???? ???? ????
  251. & GOTO ( 51, 51, 51, 51, 51, 51, 51, 51, 51
  252. * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????
  253. & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51
  254. * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????
  255. & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51
  256. * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????
  257. & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51
  258. * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????
  259. & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51
  260. * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????
  261. & , 51, 51, 51, 51, 258, 51, 260, 51, 51, 51, 51
  262. * JOI1 ZCO2 ZCO3 ZCO4
  263. c cccccc
  264. & , 129, 266, 266, 266, 51,51,271,272),MELE-200
  265. c cccccc
  266. 51 CONTINUE
  267. GOTO 99
  268.  
  269. 2 CONTINUE
  270. if (cmate.eq.'IMPELAST'.or.cmate.eq.'IMPVOIGT'.or.
  271. &cmate.eq.'IMPREUSS'.or.cmate.eq.'IMPCOMPL') then
  272. MPTVAL=IVAMAT
  273. MELVAL=IVAL(1)
  274. if (ival(/1).gt.1) then
  275. melva1 = ival(2)
  276. else
  277. melva1 = 0
  278. endif
  279. jddl = LRE/NBPGAU
  280. DO IB = 1,NBELEM
  281. * kich 1 pgau inutile
  282. IGAU = 1
  283. JDIAG = 0
  284. IBMN=MIN(IB,VELCHE(/2))
  285. IGMN=MIN(IGAU,VELCHE(/1))
  286. if (cmate.eq.'IMPCOMPL') then
  287. MLREEL=IELCHE(IGMN,IBMN)
  288. SEGACT MLREEL
  289. XRAID = prog(1)
  290. else
  291. XRAID = VELCHE(IGMN,IBMN)
  292. XTORS = XRAID
  293. if (melva1.gt.0) then
  294. XTORS = melva1.VELCHE(IGMN,IBMN)
  295. endif
  296. endif
  297. do j=1,jddl
  298. JDIAG = JDIAG + 1
  299. if (j.le.3) then
  300. RE(JDIAG,JDIAG,IB) = XRAID
  301. RE(JDIAG,JDIAG+jddl,IB) = XRAID*(-1.D0)
  302. else
  303. RE(JDIAG,JDIAG,IB) = XTORS
  304. RE(JDIAG,JDIAG+jddl,IB) = XTORS*(-1.D0)
  305. endif
  306. enddo
  307. do j=jddl+1,LRE
  308. JDIAG = JDIAG + 1
  309. if (j.le.jddl+3) then
  310. RE(JDIAG,JDIAG,IB) = XRAID
  311. RE(JDIAG,JDIAG-jddl,IB) = XRAID*(-1.D0)
  312. else
  313. RE(JDIAG,JDIAG,IB) = XTORS
  314. RE(JDIAG,JDIAG-jddl,IB) = XTORS*(-1.D0)
  315. endif
  316. enddo
  317. ENDDO
  318. SEGDES XMATRI
  319. goto 510
  320. endif
  321. if (mele.eq.2) goto 99
  322.  
  323. C_______________________________________________________________________
  324. C
  325. C ELEMENTS POUTRE TUYAU ET POUTRE TIMOSCHENKO
  326. C_______________________________________________________________________
  327. C
  328.  
  329. 29 CONTINUE
  330.  
  331. NBBB=NBNN
  332. SEGINI WRK1,WRK3
  333. C
  334. C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS
  335. C
  336. KERRE=0
  337. DO 3029 IB=1,NBELEM
  338. C
  339. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  340. C
  341. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  342. C
  343. C CAS DE L'ELEMENT LITU OU LA MATRICE DE RIGIDITE EST NULLE
  344. C
  345. IF (MELE.EQ.98) THEN
  346. CALL ZERO(REL,LRE,LRE)
  347. GOTO 8029
  348. ENDIF
  349. C
  350. C RANGEMENT DES CARACTERISTIQUES DANS WORK
  351. C SI LE VECTEUR EXISTE , IL EST EN DERNIERE POSITION
  352. C
  353. NCARR1=NCARR
  354. ** IF(IVECT.EQ.1) NCARR1=NCARR-3
  355. CALL ZERO(WORK,NCARR1,1)
  356. DO 4030 IGAU=1,NBNN
  357. MPTVAL=IVACAR
  358. DO 6029 IC=1,NCARR1
  359. IF (IVAL(IC).NE.0) THEN
  360. MELVAL=IVAL(IC)
  361. IBMN=MIN(IB,VELCHE(/2))
  362. IGMN=MIN(IGAU,VELCHE(/1))
  363. WORK(IC)=WORK(IC)+VELCHE(IGMN,IBMN)
  364. ELSE
  365. WORK(IC)=0.D0
  366. ENDIF
  367. IF (IGAU.EQ.NBNN) WORK(IC)=WORK(IC)/NBNN
  368. 6029 CONTINUE
  369. 4030 CONTINUE
  370. C
  371. MPTVAL=IVAMAT
  372. C
  373. C CAS DE L'ACOUSTIQUE PURE
  374. C
  375. IF (MELE.EQ.97) THEN
  376. DO 7029 IM=1,NMATT
  377. IF (IVAL(IM).NE.0) THEN
  378. MELVAL=IVAL(IM)
  379. IBMN=MIN(IB,VELCHE(/2))
  380. WORK(IM+9)=VELCHE(1,IBMN)
  381. ELSE
  382. WORK(IM+9)=0.D0
  383. ENDIF
  384. 7029 CONTINUE
  385. ELSE
  386. C
  387. C AUTRES CAS ......
  388. C
  389. MELVAL=IVAL(1)
  390. *
  391. IF(CMATE.NE.'SECTION') THEN
  392.  
  393. * ON RECUPERE LE MODULE D'YOUNG SI IMAT = 1
  394.  
  395. IF(IMAT.EQ.1) THEN
  396. IBMN=MIN(IB,VELCHE(/2))
  397. VALMAT(1)=VELCHE(1,IBMN)
  398. YOUNG=VALMAT(1)
  399. C
  400. C ON CHERCHE LES COEFF DES MAT DE HOOKE SI IMAT = 2
  401. C
  402. ELSE IF(IMAT.EQ.2) THEN
  403. MELVAL=IVAL(1)
  404. IBMN=MIN(IB,IELCHE(/2))
  405. MLREEL=IELCHE(1,IBMN)
  406. SEGACT MLREEL
  407. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  408. $ CALL DOHOOO(PROG,LHOOK,DDHOOK)
  409. SEGDES MLREEL
  410. *
  411. IF(MELE.EQ.42) THEN
  412. EPAIS=WORK(1)
  413. REXT=WORK(2)
  414. RINT=REXT-EPAIS
  415. SD =XPI*(REXT**2-RINT**2)
  416. YOUNG = DDHOOK(1,1)/SD
  417. ENDIF
  418. ENDIF
  419. C
  420. C CAS DES TUYAUX - ON CALCULE LES CARACTERISTIQUES DE LA POUTRE
  421. C EQUIVALENTE
  422. IF(MELE.EQ.42) THEN
  423. PRES=WORK(4)
  424. CISA=WORK(5)
  425. ** write(6,*) 'tuykar ncarr',ncarr,
  426. ** > work(6),work(7),work(8),work(9),work(10)
  427. WORK(4)=WORK(6)
  428. WORK(5)=WORK(7)
  429. WORK(6)=WORK(8)
  430. WORK(7)=PRES
  431. WORK(8)=CISA
  432. CALL TUYKAR(WORK,KERRE,2,YOUNG)
  433. ENDIF
  434. IF (KERRE.EQ.77) THEN
  435. CALL ERREUR(77)
  436. GOTO 510
  437. ENDIF
  438.  
  439. C-------------
  440. C PROVISOIRE
  441. C-------------
  442. IF(IMAT.EQ.2) THEN
  443. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
  444. WORK(4)=DDHOOK(1,1)/WORK(1)
  445. WORK(5)=DDHOOK(2,2)/(MAX(WORK(3),WORK(1)))
  446. ELSE
  447. *
  448. *ZZZZ ATTENTION A LA DIVISION PAR 0.
  449. *
  450. WORK(10)=DDHOOK(1,1)/WORK(4)
  451. *
  452. IF(ABS(WORK(5)).LT.XPETIT/XZPREC) THEN
  453. IF(ABS(DDHOOK(2,2)).GE.XPETIT/XZPREC) then
  454. MOTERR(1:4)='SECY'
  455. CALL ERREUR(46)
  456. RETURN
  457. ELSE
  458. work(11)=0.d0
  459. ENDIF
  460. Else
  461. WORK(11)=DDHOOK(2,2)/WORK(5)
  462. ENDIF
  463. ENDIF
  464. ELSE IF (IMAT.EQ.1) THEN
  465. *
  466. DO 9029 IM=1,NMATT
  467. IF (IVAL(IM).NE.0) THEN
  468. MELVAL=IVAL(IM)
  469. IBMN=MIN(IB,VELCHE(/2))
  470. VALMAT(IM)=VELCHE(1,IBMN)
  471. ELSE
  472. VALMAT(IM)=0.D0
  473. ENDIF
  474. 9029 CONTINUE
  475. IF(MELE.EQ.84) THEN
  476. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
  477. CALL DOHTI2(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD)
  478. ELSE
  479. C
  480. CALL DOHTIM(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD)
  481. ENDIF
  482. ELSE
  483. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
  484. CALL DOHPT2(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD)
  485. ELSE
  486. CALL DOHPTR(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD)
  487. ENDIF
  488. ENDIF
  489. C-------------
  490. C PROVISOIRE
  491. C-------------
  492. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
  493. WORK(4)=VALMAT(1)
  494. AUX=VALMAT(2)
  495. WORK(5)=WORK(4)*0.5D0/(1.D0+AUX)
  496. ELSE
  497. C
  498. WORK(10)=VALMAT(1)
  499. AUX=VALMAT(2)
  500. WORK(11)=WORK(10)*0.5D0/(1.D0+AUX)
  501. ENDIF
  502. C-------------
  503. ENDIF
  504. *
  505. * CAS DE LA FORMULATION SECTION
  506. *
  507. ELSE
  508. IF(IMAT.EQ.2) THEN
  509. MELVAL=IVAL(1)
  510. IBMN=MIN(IB,IELCHE(/2))
  511. MLREEL=IELCHE(1,IBMN)
  512. SEGACT MLREEL
  513. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  514. $ CALL DOHOOO(PROG,LHOOK,DDHOOK)
  515. SEGDES MLREEL
  516. C
  517. ELSE IF (IMAT.EQ.1) THEN
  518. *
  519. * ON REGARDE SI ON A LA COMPOSANTE MAHO
  520. * SI OUI, ON LA PREND
  521. *
  522. IF(IVAL(3).NE.0) THEN
  523. MELVAL=IVAL(3)
  524. IBMN=MIN(IB,IELCHE(/2))
  525. MLREEL=IELCHE(1,IBMN)
  526. SEGACT MLREEL
  527. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  528. $ CALL DOHOOO(PROG,LHOOK,DDHOOK)
  529. SEGDES MLREEL
  530. *
  531. ELSE
  532. IBMN=MIN(IB,IELCHE(/2))
  533. IPMODL=IELCHE(1,IBMN)
  534. MELVAL=IVAL(2)
  535. IBMN=MIN(IB,IELCHE(/2))
  536. IPMAT=IELCHE(1,IBMN)
  537. CALL FRIGIE(IPMODL,IPMAT,CRIGI,CMASS)
  538. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  539. $ CALL DOHTIF(CRIGI,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  540. ENDIF
  541. ENDIF
  542. ENDIF
  543. ENDIF
  544. C
  545. C FIN TRAITEMENT DES DONNEES MATERIAUX
  546. C
  547. IF(MELE.EQ.97) THEN
  548. CALL ACORIG(REL,LRE,WORK,XE,KERRE)
  549. ELSE IF(MELE.EQ.84) THEN
  550. IF(CMATE.NE.'SECTION') THEN
  551.  
  552. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
  553. CALL TIMRI2(REL,LRE,WORK,XE,WORK(12),KERRE)
  554. ELSE
  555. CALL TIMRIG(REL,LRE,WORK,XE,WORK(12),KERRE)
  556. ENDIF
  557. *
  558. ELSE
  559. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
  560. CALL TIFRI2(REL,LRE,XE,WORK(12),LHOOK,
  561. $ DDHOOK,KERRE)
  562. ELSE
  563. CALL TIFRIG(REL,LRE,WORK,XE,WORK(12),LHOOK,
  564. $ DDHOOK,KERRE)
  565. ENDIF
  566. ENDIF
  567. ELSE
  568. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
  569. CALL POURH2(REL,LRE,WORK,XE,WORK(12),IMAT,
  570. & LHOOK, DDHOOK, KERRE)
  571. ELSE
  572. CALL POURHG(REL,LRE,WORK,XE,WORK(12),IMAT,
  573. & LHOOK, DDHOOK, KERRE)
  574. ENDIF
  575. ENDIF
  576. C
  577. IF(KERRE.NE.0) INTERR(1)=ISOUS
  578. IF(KERRE.NE.0) INTERR(2)=IB
  579. C
  580. 4029 CONTINUE
  581. 8029 CONTINUE
  582. * SEGINI XMATRI
  583. * IMATTT(IB)=XMATRI
  584. C
  585. C REMPLISSAGE DE XMATRI
  586. C
  587. CALL REMPMT(REL,LRE,RE(1,1,IB))
  588. * SEGDES XMATRI
  589. 3029 CONTINUE
  590. IF(KERRE.EQ.1) CALL ERREUR(128)
  591. IF(KERRE.EQ.2) CALL ERREUR(138)
  592. IF(IRTD.EQ.0) THEN
  593. MOTERR(1:8)=CMATE
  594. MOTERR(9:16)=NOMFR(MFR/2+1)
  595. INTERR(1)=IFOUR
  596. CALL ERREUR(81)
  597. return
  598. ENDIF
  599. SEGDES XMATRI
  600. SEGSUP WRK1,WRK3,MVELCH
  601. GOTO 510
  602. C_______________________________________________________________________
  603. C
  604. C ELEMENTS LINESPRING LISP ET LISM
  605. C_______________________________________________________________________
  606. C
  607. 30 CONTINUE
  608. NBBB=NBNN
  609. NSTRS=2
  610. SEGINI WRK1,WRK3
  611. C
  612. C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS
  613. C
  614. DO 3030 IB=1,NBELEM
  615. C
  616. C ON CHRCHE LES COORDONNEES DES NOEUDS
  617. C
  618. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  619. C
  620. C ON CHERCHE LES COEFFS DE LA MATRICE DE HOOKE
  621. C
  622. MPTVAL=IVAMAT
  623. IF(IMAT.EQ.2) THEN
  624. MELVAL=IVAL(1)
  625. IBMN=MIN(IB ,IELCHE(/2))
  626. MLREEL=IELCHE(1,IBMN)
  627. SEGACT MLREEL
  628. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  629. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  630. SEGDES MLREEL
  631. ELSE IF (IMAT.EQ.1) THEN
  632. *
  633. DO 9030 IM=1,NMATT
  634. IF (IVAL(IM).NE.0) THEN
  635. MELVAL=IVAL(IM)
  636. IBMN=MIN(IB ,VELCHE(/2))
  637. VALMAT(IM)=VELCHE(1,IBMN)
  638. ELSE
  639. VALMAT(IM)=0.D0
  640. ENDIF
  641. 9030 CONTINUE
  642. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  643. 1 CALL DOHLIS(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  644. ENDIF
  645. C
  646. C ON CHERCHE LES CARACTERISTIQUES ON OUBLIE LE 2 IEME POINT DEGAUS
  647. C
  648. IE=0
  649. MPTVAL=IVACAR
  650. DO IC=1,3,2
  651. DO ID=1,NCARR
  652. IE=IE+1
  653. MELVAL=IVAL(ID)
  654. IGMN=MIN(IC,VELCHE(/1))
  655. IBMN=MIN(IB,VELCHE(/2))
  656. WORK(IE)=VELCHE(IGMN,IBMN)
  657. enddo
  658. enddo
  659. C
  660. C CALCUL DE LA RIGIDITE
  661. C
  662. CALL LISPRI(XE,WORK,DDHOOK,WORK(11),MELE,REL,I70,I343,I157,I158)
  663. C IF(I70.EQ.1) INTERR(1)=IB
  664. IF(I158.EQ.1) INTERR(1)=IB
  665. IF(I343.EQ.1) INTERR(1)=IB
  666. * SEGINI XMATRI
  667. * IMATTT(IB)=XMATRI
  668. C
  669. C REMPLISSAGE DE XMATRI
  670. C
  671. CALL REMPMT(REL,LRE,RE(1,1,IB))
  672. * SEGDES XMATRI
  673. 3030 CONTINUE
  674. C IF(I70.EQ.1) CALL ERREUR(70)
  675. IF(I158.EQ.1) CALL ERREUR(158)
  676. IF(I343.EQ.1) CALL ERREUR(343)
  677. IF(IRTD.EQ.0) THEN
  678. MOTERR(1:8)=CMATE
  679. MOTERR(9:16)=NOMFR(MFR/2+1)
  680. INTERR(1)=IFOUR
  681. CALL ERREUR(81)
  682. ENDIF
  683. SEGDES XMATRI
  684. SEGSUP WRK1,WRK3,MVELCH
  685. GOTO 510
  686. C_______________________________________________________________________
  687. C
  688. C ELEMENT TUYAU FISSURE
  689. C_______________________________________________________________________
  690. C
  691. 43 CONTINUE
  692. NBBB=NBNN
  693. NSTRS=2
  694. SEGINI WRK1,WRK3
  695. C
  696. C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS
  697. C
  698. DO 3043 IB=1,NBELEM
  699. C
  700. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  701. C
  702. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  703. C
  704. C
  705. C ON CHERCHE LES COEFF DES MAT DE HOOKE
  706. C
  707. MPTVAL=IVAMAT
  708. IF(IMAT.EQ.2) THEN
  709. MELVAL=IVAL(1)
  710. IBMN=MIN(IB ,IELCHE(/2))
  711. MLREEL=IELCHE(1,IBMN)
  712. SEGACT MLREEL
  713. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  714. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  715. SEGDES MLREEL
  716. ELSE IF (IMAT.EQ.1) THEN
  717. *
  718. DO 9043 IM=1,NMATT
  719. IF (IVAL(IM).NE.0) THEN
  720. MELVAL=IVAL(IM)
  721. IBMN=MIN(IB ,VELCHE(/2))
  722. VALMAT(IM)=VELCHE(1,IBMN)
  723. ELSE
  724. VALMAT(IM)=0.D0
  725. ENDIF
  726. 9043 CONTINUE
  727. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  728. 1 CALL DOHFIS(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  729. ENDIF
  730. C
  731. C CHERCHER LES CARACTERISTIQUES
  732. C
  733. MPTVAL=IVACAR
  734. DO 4043 IC=1,NCARR
  735. MELVAL=IVAL(IC)
  736. IBMN=MIN(IB,VELCHE(/2))
  737. WORK(IC)=VELCHE(1,IBMN)
  738. 4043 CONTINUE
  739. C
  740. C ON CALCULE SA RAIDEUR
  741. C
  742. CALL TUFIRI(REL,WORK(1),DDHOOK,I137)
  743. IF(I137.NE.0) INTERR(1)=ISOUS
  744. IF(I137.NE.0) INTERR(2)=IB
  745. C
  746. C REMPLISSAGE DE XMATRI
  747. C
  748. CALL REMPMT(REL,LRE,RE(1,1,IB))
  749. C
  750. 3043 CONTINUE
  751. IF(I137.EQ.1) CALL ERREUR(137)
  752. IF(I137.EQ.2) CALL ERREUR(123)
  753. IF(I137.EQ.3) CALL ERREUR(266)
  754. IF(IRTD.EQ.0) THEN
  755. MOTERR(1:8)=CMATE
  756. MOTERR(9:16)=NOMFR(MFR/2+1)
  757. INTERR(1)=IFOUR
  758. CALL ERREUR(81)
  759. ENDIF
  760. SEGDES XMATRI
  761. SEGSUP WRK1,WRK3,MVELCH
  762. GOTO 510
  763. C_______________________________________________________________________
  764. C
  765. C ELEMENT POI1
  766. C_______________________________________________________________________
  767. C
  768. 45 CONTINUE
  769. if (cmate.eq.'IMPELAST'.or.cmate.eq.'IMPVOIGT'.or.
  770. &cmate.eq.'IMPREUSS'.or.cmate.eq.'IMPCOMPL') then
  771.  
  772. MPTVAL=IVAMAT
  773. MELVAL=IVAL(1)
  774. if (ival(/1).gt.1) then
  775. melva1 = ival(2)
  776. else
  777. melva1 = 0
  778. endif
  779. DO IB = 1,NBELEM
  780. JDIAG = 0
  781. * SEGINI XMATRI
  782. * IMATTT(IB)=XMATRI
  783. IBMN=MIN(IB,VELCHE(/2))
  784. do igau = 1,NBPGAU
  785. IGMN=MIN(IGAU,VELCHE(/1))
  786. XRAID = VELCHE(IGMN,IBMN)
  787. XTORS = XRAID
  788. if (melva1.gt.0) then
  789. XTORS = melva1.VELCHE(IGMN,IBMN)
  790. endif
  791. do j =1,LRE
  792. JDIAG = JDIAG + 1
  793. if (j.le.3) then
  794. RE(JDIAG,JDIAG,IB) = XRAID
  795. else
  796. RE(JDIAG,JDIAG,IB) = XTORS
  797. endif
  798. enddo
  799. enddo
  800. * SEGDES XMATRI
  801. ENDDO
  802. SEGDES XMATRI
  803. goto 510
  804. endif
  805.  
  806. IF (CMATE.EQ.'MODAL') THEN
  807. * MODAL
  808. DO IB = 1,NBELEM
  809. MPTVAL=IVAMAT
  810. MELVAL=IVAL(1)
  811. IBMN=MIN(IB,VELCHE(/2))
  812. XFREQ=VELCHE(1,IBMN)
  813. MELVAL=IVAL(2)
  814. IBMN=MIN(IB,VELCHE(/2))
  815. XMASS=VELCHE(1,IBMN)
  816. OMEG = 2. * XPI * XFREQ
  817. RE(1,1,IB) = XMASS * OMEG * OMEG
  818. cbp-2017-10-02 if (xfreq.lt.0) RE(1,1,IB) = RE(1,1,IB) * (-1.)
  819. if (XFREQ.LT.0.D0) RE(1,1,IB) = 0.D0
  820. ENDDO
  821. GOTO 510
  822. *
  823.  
  824. ELSE IF (CMATE.EQ.'STATIQUE') THEN
  825. * STATIQUE
  826. DO IB = 1,NBELEM
  827. MPTVAL=IVAMAT
  828. MELVAL=IVAL(1)
  829. IBMN=MIN(IB,IELCHE(/2))
  830. idepl=IELCHE(1,IBMN)
  831. MELVAL=IVAL(2)
  832. IBMN=MIN(IB,IELCHE(/2))
  833. itreac=IELCHE(1,IBMN)
  834. CALL XTY1(idepl,itreac,iinc,idua,X1)
  835. if (ierr.ne.0) return
  836. re(1,1,IB) = x1
  837. ENDDO
  838. SEGDES XMATRI
  839. GOTO 510
  840. ENDIF
  841. *
  842. IF(MELE.EQ.45.AND.IFOUR.NE.-3) THEN
  843. GOTO 99
  844. ENDIF
  845. NBBB=NBNN
  846. SEGINI WRK1,WRK3
  847. C
  848. C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS
  849. C
  850. KERRE=0
  851. DO 3045 IB=1,NBELEM
  852. C
  853. C ON CHERCHE LES COORDONNEES DE L ELEMENT IB
  854. C
  855. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  856. C
  857. C
  858. C ON RECUPERE LA SECTION DE L'ELEMENT
  859. C
  860. MPTVAL=IVACAR
  861. MELVAL=IVAL(1)
  862. IBMN=MIN(IB,VELCHE(/2))
  863. SECT=VELCHE(1,IBMN)
  864. C
  865. C ON CHERCHE LE COEFF DE LA MAT DE HOOKE
  866. C
  867. MPTVAL=IVAMAT
  868. IF(IMAT.EQ.2) THEN
  869. MELVAL=IVAL(1)
  870. IBMN=MIN(IB ,IELCHE(/2))
  871. MLREEL=IELCHE(1,IBMN)
  872. SEGACT MLREEL
  873. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  874. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  875. SEGDES MLREEL
  876. ELSE IF (IMAT.EQ.1) THEN
  877. *
  878. DO 9045 IM=1,NMATT
  879. IF (IVAL(IM).NE.0) THEN
  880. MELVAL=IVAL(IM)
  881. IBMN=MIN(IB ,VELCHE(/2))
  882. VALMAT(IM)=VELCHE(1,IBMN)
  883. ELSE
  884. VALMAT(IM)=0.D0
  885. ENDIF
  886. 9045 CONTINUE
  887. CALL DOHBRR(VALMAT,SECT,DDHOOK(1,1),IRTD)
  888. ENDIF
  889. CALL PO1RIG(REL,LRE,DDHOOK(1,1),XE,KERRE,XDPGE,YDPGE)
  890. C
  891. * SEGINI XMATRI
  892. * IMATTT(IB)=XMATRI
  893. C
  894. C REMPLISSAGE DE XMATRI
  895. C
  896. CALL REMPMT(REL,LRE,RE(1,1,IB))
  897. * SEGDES XMATRI
  898. 3045 CONTINUE
  899. IF(IRTD.EQ.0) THEN
  900. MOTERR(1:8)=CMATE
  901. MOTERR(9:16)=NOMFR(MFR/2+1)
  902. INTERR(1)=IFOUR
  903. CALL ERREUR(81)
  904. ENDIF
  905. SEGDES XMATRI
  906. SEGSUP WRK1,WRK3,MVELCH
  907. GOTO 510
  908. C_______________________________________________________________________
  909. C
  910. C ELEMENTS BARRE ET CERCE
  911. C_______________________________________________________________________
  912. C
  913. 46 CONTINUE
  914. *
  915. IF(MELE.EQ.95.AND.IFOUR.NE.0.AND.IFOUR.NE.1) THEN
  916. GO TO 99
  917. ENDIF
  918. NBBB=NBNN
  919. SEGINI WRK1,WRK3
  920. IF(MELE.EQ.123) THEN
  921. NSTN=NBNN
  922. LRN =LRE
  923. SEGINI WRK5
  924. ENDIF
  925. C
  926. C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS
  927. C
  928. KERRE=0
  929. DO 3046 IB=1,NBELEM
  930. C
  931. C ON CHERCHE LES COORDONNEES DE L ELEMENT IB
  932. C
  933. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  934. C
  935. C
  936. C ON RECUPERE LA SECTION DE L'ELEMENT
  937. C
  938. MPTVAL=IVACAR
  939. MELVAL=IVAL(1)
  940. IBMN=MIN(IB,VELCHE(/2))
  941. SECT=VELCHE(1,IBMN)
  942. C
  943. C ON CHERCHE LE COEFF DE LA MAT DE HOOKE
  944. C
  945. MPTVAL=IVAMAT
  946. IF(IMAT.EQ.2) THEN
  947. MELVAL=IVAL(1)
  948. IBMN=MIN(IB ,IELCHE(/2))
  949. MLREEL=IELCHE(1,IBMN)
  950. SEGACT MLREEL
  951. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  952. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  953. SEGDES MLREEL
  954. ELSE IF (IMAT.EQ.1) THEN
  955. *
  956. DO 9046 IM=1,NMATT
  957. IF (IVAL(IM).NE.0) THEN
  958. MELVAL=IVAL(IM)
  959. IBMN=MIN(IB ,VELCHE(/2))
  960. VALMAT(IM)=VELCHE(1,IBMN)
  961. ELSE
  962. VALMAT(IM)=0.D0
  963. ENDIF
  964. 9046 CONTINUE
  965. CALL DOHBRR(VALMAT,SECT,DDHOOK(1,1),IRTD)
  966. ENDIF
  967. IF(MELE.EQ.46) CALL BARRIG(REL,LRE,DDHOOK(1,1),XE,KERRE)
  968. IF(MELE.EQ.95) CALL CERRIG(REL,LRE,DDHOOK(1,1),XE,KERRE)
  969. IF(MELE.EQ.123)CALL BARIG3(REL,LRE,DDHOOK(1,1),XE,XGENE,KERRE,IB)
  970. IF(KERRE.NE.0) INTERR(1)=ISOUS
  971. IF(KERRE.NE.0) INTERR(2)=IB
  972. C
  973. * SEGINI XMATRI
  974. * IMATTT(IB)=XMATRI
  975. C
  976. C REMPLISSAGE DE XMATRI
  977. C
  978. CALL REMPMT(REL,LRE,RE(1,1,IB))
  979. * SEGDES XMATRI
  980. 3046 CONTINUE
  981. IF(MELE.EQ.46.AND.KERRE.EQ.1) CALL ERREUR(128)
  982. IF(MELE.EQ.95.AND.KERRE.EQ.1) CALL ERREUR(601)
  983. IF(MELE.EQ.123.AND.KERRE.EQ.1) CALL ERREUR(128)
  984. IF(IRTD.EQ.0) THEN
  985. MOTERR(1:8)=CMATE
  986. MOTERR(9:16)=NOMFR(MFR/2+1)
  987. INTERR(1)=IFOUR
  988. CALL ERREUR(81)
  989. ENDIF
  990. SEGDES XMATRI
  991. SEGSUP WRK1,WRK3,MVELCH
  992. IF(MELE.EQ.123) SEGSUP WRK5
  993. GOTO 510
  994. C
  995. C_______________________________________________________________________
  996. C
  997. C ELEMENT BARRE 3D EXCENTRE (BAEX)
  998. C_______________________________________________________________________
  999. C
  1000. 124 CONTINUE
  1001. NBBB=NBNN
  1002. NBNO=NBNN
  1003. NSTRS1=NSTRS
  1004. NSTRS=NBNN
  1005. SEGINI WRK1,WRK2,WRK3
  1006. C
  1007. C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS
  1008. C
  1009. KERRE=0
  1010. DO 3108 IB=1,NBELEM
  1011. C
  1012. C ON RECUPERE LA SECTION DE L'ELEMENT, SES EXCENTREMENTS ET SON
  1013. C ORIENTATION. LES CARACTERISTIQUES SONT RANGEES DANS WORK
  1014. C SELON L'ORDRE SUIVANT: SECT EXCZ EXCY VX VY VZ
  1015. C
  1016. MPTVAL=IVACAR
  1017. DO IC=1,NCARR
  1018. IF(IVAL(IC).NE.0) THEN
  1019. MELVAL=IVAL(IC)
  1020. IBMN=MIN(IB,VELCHE(/2))
  1021. WORK(IC)=VELCHE(1,IBMN)
  1022. ELSE
  1023. WORK(IC)=0.D0
  1024. ENDIF
  1025. END DO
  1026. SECT=WORK(1)
  1027. C
  1028. C ON CHERCHE LE COEFF DE LA MAT DE HOOKE
  1029. C
  1030. MPTVAL=IVAMAT
  1031. IF(IMAT.EQ.2) THEN
  1032. MELVAL=IVAL(1)
  1033. IBMN=MIN(IB ,IELCHE(/2))
  1034. MLREEL=IELCHE(1,IBMN)
  1035. SEGACT MLREEL
  1036. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  1037. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  1038. SEGDES MLREEL
  1039. ELSE IF (IMAT.EQ.1) THEN
  1040. DO 9108 IM=1,NMATT
  1041. IF (IVAL(IM).NE.0) THEN
  1042. MELVAL=IVAL(IM)
  1043. IBMN=MIN(IB ,VELCHE(/2))
  1044. VALMAT(IM)=VELCHE(1,IBMN)
  1045. ELSE
  1046. VALMAT(IM)=0.D0
  1047. ENDIF
  1048. 9108 CONTINUE
  1049. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  1050. 1 CALL DOHBRR(VALMAT,SECT,DDHOOK(1,1),IRTD)
  1051. ENDIF
  1052. C
  1053. C BGENE STOCKE LA MATRICE DE PASSAGE DE L'ELEMENT EXCENTRE
  1054. C
  1055. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1056. CALL MAPAEX(XE,NBNN,WORK,AL,BGENE,LRE,KERRE)
  1057. IF(KERRE.NE.0) INTERR(1)=ISOUS
  1058. IF(KERRE.NE.0) INTERR(2)=IB
  1059. IF(KERRE.EQ.1) CALL ERREUR(128)
  1060. CALL RIGBEX(REL,LRE,DDHOOK(1,1),AL,BGENE)
  1061. C
  1062. * SEGINI XMATRI
  1063. * IMATTT(IB)=XMATRI
  1064. C
  1065. C REMPLISSAGE DE XMATRI
  1066. C
  1067. CALL REMPMT(REL,LRE,RE(1,1,IB))
  1068. * SEGDES XMATRI
  1069. 3108 CONTINUE
  1070. NSTRS=NSTRS1
  1071. SEGDES XMATRI
  1072. SEGSUP WRK1,WRK2,WRK3,MVELCH
  1073. GOTO 510
  1074. C_______________________________________________________________________
  1075. C
  1076. C LIA2 : element de liaison a 2 noeuds (6 ddl par noeuds)
  1077. C_______________________________________________________________________
  1078. C
  1079. 125 CONTINUE
  1080. NBBB=NBNN
  1081. NBNO=NBNN
  1082. SEGINI WRK1,WRK2,WRK3,WRK4
  1083. C
  1084. C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS
  1085. C
  1086. KERRE=0
  1087. DO 3109 IB=1,NBELEM
  1088. C
  1089. MPTVAL=IVACAR
  1090. DO IC=1,NCARR
  1091. IF(IVAL(IC).NE.0) THEN
  1092. MELVAL=IVAL(IC)
  1093. IBMN=MIN(IB,VELCHE(/2))
  1094. WORK(IC)=VELCHE(1,IBMN)
  1095. ELSE
  1096. WORK(IC)=0.D0
  1097. ENDIF
  1098. END DO
  1099. C
  1100. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1101. CALL MAPALI(XE,NBNN,WORK,BPSS,KERRE)
  1102. IF(KERRE.NE.0) INTERR(1)=ISOUS
  1103. IF(KERRE.NE.0) INTERR(2)=IB
  1104. IF(KERRE.EQ.1) CALL ERREUR(128)
  1105. CALL RIGLI2(REL,LRE,BPSS,WORK)
  1106. C
  1107. * SEGINI XMATRI
  1108. * IMATTT(IB)=XMATRI
  1109. C
  1110. C REMPLISSAGE DE XMATRI
  1111. C
  1112. CALL REMPMT(REL,LRE,RE(1,1,IB))
  1113. * SEGDES XMATRI
  1114. 3109 CONTINUE
  1115. SEGDES XMATRI
  1116. SEGSUP WRK1,WRK2,WRK3,MVELCH
  1117. GOTO 510
  1118. *-------------------------------------------------------------
  1119. C_______________________________________________________________________
  1120. C
  1121. C JOI1 : element de liaison a 2 noeuds (6 ddl par noeuds)
  1122. C_______________________________________________________________________
  1123. C
  1124. 129 CONTINUE
  1125. NBBB=NBNN
  1126. NBNO=NBNN
  1127. SEGINI WRK1,WRK2,WRK3,WRK4
  1128. C
  1129. C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS
  1130. C
  1131. KERRE=0
  1132. DO 3110 IB=1,NBELEM
  1133. C
  1134. MPTVAL=IVAMAT
  1135.  
  1136. IF(IMAT.EQ.2) THEN
  1137.  
  1138. MELVAL=IVAL(1)
  1139. IBMN=MIN(IB ,IELCHE(/2))
  1140. MLREEL=IELCHE(1,IBMN)
  1141. SEGACT MLREEL
  1142. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  1143. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  1144. SEGDES MLREEL
  1145.  
  1146. CALL RIGJOL(REL,LRE,DDHOOK,LHOOK,IDIM)
  1147.  
  1148. IF(IDIM.EQ.2) THEN
  1149. NCA=2
  1150. ELSE
  1151. NCA=6
  1152. ENDIF
  1153. *
  1154. MPTVAL=IVACAR
  1155. DO IC=1,NCA
  1156. IF(IVAL(IC).NE.0) THEN
  1157. MELVAL=IVAL(IC)
  1158. IBMN=MIN(IB,VELCHE(/2))
  1159. WORK(IC)=VELCHE(1,IBMN)
  1160. ELSE
  1161. WORK(IC)=0.D0
  1162. ENDIF
  1163. END DO
  1164. CALL MAPALU(NCA,WORK,BPSS,IDIM)
  1165. ELSE
  1166. DO IC=1,NMATT
  1167. IF(IVAL(IC).NE.0) THEN
  1168. MELVAL=IVAL(IC)
  1169. IBMN=MIN(IB,VELCHE(/2))
  1170. WORK(IC)=VELCHE(1,IBMN)
  1171. ELSE
  1172. WORK(IC)=0.D0
  1173. ENDIF
  1174. END DO
  1175. c
  1176. c on calcule la matrice de rigidité locale
  1177. c
  1178. CALL RIGJOI(NMATT,REL,LRE,WORK,IDIM,CMATE)
  1179. CALL MAPALU(NMATT,WORK,BPSS,IDIM)
  1180. ENDIF
  1181. c
  1182. c on passe en repère global
  1183. c
  1184. IAW1=101
  1185. IAW2=IAW1+LRE*LRE
  1186. IAW3=IAW2+LRE*LRE
  1187. IAW4=IAW3+LRE*LRE
  1188. CALL JOIGLO(REL,BPSS,WORK(IAW1),WORK(IAW2),
  1189. & WORK(IAW3),WORK(IAW4),LRE,IDIM)
  1190. *
  1191. C
  1192. * SEGINI XMATRI
  1193. * IMATTT(IB)=XMATRI
  1194. C
  1195. C REMPLISSAGE DE XMATRI
  1196. C
  1197. CALL REMPMT(REL,LRE,RE(1,1,IB))
  1198. *
  1199. * SEGDES XMATRI
  1200. 3110 CONTINUE
  1201. SEGDES XMATRI
  1202. SEGSUP WRK1,WRK2,WRK3,MVELCH
  1203. GOTO 510
  1204. *-------------------------------------------------------------
  1205. c
  1206. c element coaxial COS2 (3D pour liaison acier-beton)
  1207. c
  1208. 271 continue
  1209. NBBB=NBNN
  1210. lw=5
  1211. SEGINI WRK1,WRK4,wrk3
  1212. do 3271 ib= 1,nbelem
  1213. C
  1214. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  1215. C
  1216.  
  1217. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1218. CALL ZERO (REL,LRE,LRE)
  1219. CALL CO2LOC(XE,SHPTOT,NBNN,XEL,BPSS,NOQUAL,IDIM)
  1220. MPTVAL=IVAmat
  1221. if(imat.eq.1) then
  1222. DO IC=1,2
  1223. IF(IVAL(IC).NE.0) THEN
  1224. MELVAL=IVAL(IC)
  1225. IBMN=MIN(IB,VELCHE(/2))
  1226. WORK(ic)=VELCHE(1,IBMN)
  1227. ELSE
  1228. WORK(IC)=0.D0
  1229. ENDIF
  1230. END DO
  1231. ELSE
  1232. MELVAL=IVAL(1)
  1233. IBMN=MIN(IB,IELCHE(/2))
  1234. MLREEL=IELCHE(1,IBMN)
  1235. SEGACT MLREEL
  1236. if(idim.eq.3) then
  1237. work(1)= prog(1)
  1238. work(2) = prog(9)
  1239. else if (idim.eq.1.or.idim.eq.2) then
  1240. CALL ERREUR(81)
  1241. endif
  1242. segdes mlreel
  1243. endif
  1244. C
  1245. C
  1246. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  1247. C
  1248. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1249. xv1= xe(1,2)-xe(1,1)
  1250. yv1= xe(2,2)-xe(2,1)
  1251. zv1=0.d0
  1252. if( idim.eq.3) zv1 = xe(3,2)-xe(3,1)
  1253. xl= sqrt(xv1*xv1 + yv1*yv1 + zv1*zv1)
  1254. C
  1255. C recuperation de la section et calcul du diamètre
  1256. C
  1257. MPTVAL=IVACAR
  1258. DO 2712 ICOMP=1,NCARR
  1259. MELVAL=IVAL(ICOMP)
  1260. IGMN = VELCHE(/1)
  1261. IBMN=MIN(IB,VELCHE(/2))
  1262. SECA =VELCHE(IGMN,IBMN)
  1263. 2712 CONTINUE
  1264. diam = sqrt(4.d0*SECA/xpi)
  1265. C
  1266. xls1 = (3.d0*xpi*diam*xl)/8.d0
  1267. xls2 = (1.d0*xpi*diam*xl)/8.d0
  1268. xks1 = xls1*work(1)
  1269. xks2 = xls2*work(1)
  1270. xln1 = (3.d0*diam*xl)/8.d0
  1271. xln2 = (1.d0*diam*xl)/8.d0
  1272. xkn1 = xln1*work(2)
  1273. xkn2 = xln2*work(2)
  1274. xks = work(1)
  1275. xkn = work(2)
  1276. if (idim.eq.2) then
  1277. C cas de matrice elastique
  1278. rel(1,1)= xks1
  1279. rel(1,3)= xks2
  1280. rel(1,5)= -xks2
  1281. rel(1,7)=-xks1
  1282. rel(7,7)= xks1
  1283. rel(7,1)=-xks1
  1284. rel(7,3)= -xks2
  1285. rel(7,5)= xks2
  1286. rel(3,3)=xks1
  1287. rel(3,5)=-xks1
  1288. rel(3,1)= xks2
  1289. rel(3,7)= -xks2
  1290. rel(5,5)=xks1
  1291. rel(5,3)=-xks1
  1292. rel(5,1)= -xks2
  1293. rel(5,7)= xks2
  1294. c ---------------------------
  1295. rel(2,2)= xkn1
  1296. rel(2,4)= xkn2
  1297. rel(2,6)= -xkn2
  1298. rel(2,8)=-xkn1
  1299. rel(8,8)= xkn1
  1300. rel(8,2)=-xkn1
  1301. rel(8,4)= -xkn2
  1302. rel(8,6)= xkn2
  1303. rel(4,4)=xkn1
  1304. rel(4,6)=-xkn1
  1305. rel(4,2)= xkn2
  1306. rel(4,8)= -xkn2
  1307. rel(6,6)=xkn1
  1308. rel(6,4)=-xkn1
  1309. rel(6,2)= -xkn2
  1310. rel(6,8)= xkn2
  1311. else if (idim.eq.3) then
  1312. C cas de matrice elastique
  1313. rel(1,1)= xks1
  1314. rel(1,4)= xks2
  1315. rel(1,7)= -xks2
  1316. rel(1,10)=-xks1
  1317. rel(10,10)= xks1
  1318. rel(10,1)=-xks1
  1319. rel(10,4)= -xks2
  1320. rel(10,7)= xks2
  1321. rel(4,4)=xks1
  1322. rel(4,7)=-xks1
  1323. rel(4,1)= xks2
  1324. rel(4,10)= -xks2
  1325. rel(7,7)=xks1
  1326. rel(7,4)=-xks1
  1327. rel(7,1)= -xks2
  1328. rel(7,10)= xks2
  1329. C ------- remplissage de KN ------------
  1330. rel(2,2)= xkn1
  1331. rel(2,5)= xkn2
  1332. rel(2,8)= -xkn2
  1333. rel(2,11)=-xkn1
  1334. rel(11,11)= xkn1
  1335. rel(11,2)=-xkn1
  1336. rel(11,5)= -xkn2
  1337. rel(11,8)= xkn2
  1338. rel(5,5)=xkn1
  1339. rel(5,8)=-xkn1
  1340. rel(5,2)= xkn2
  1341. rel(5,11)= -xkn2
  1342. rel(8,8)=xkn1
  1343. rel(8,5)=-xkn1
  1344. rel(8,2)= -xkn2
  1345. rel(8,11)= xkn2
  1346. c------------
  1347. rel(3,3)= xkn1
  1348. rel(3,6)= xkn2
  1349. rel(3,9)= -xkn2
  1350. rel(3,12)=-xkn1
  1351. rel(12,12)= xkn1
  1352. rel(12,3)=-xkn1
  1353. rel(12,6)= -xkn2
  1354. rel(12,9)= xkn2
  1355. rel(6,6)=xkn1
  1356. rel(6,9)=-xkn1
  1357. rel(6,3)= xkn2
  1358. rel(6,12)= -xkn2
  1359. rel(9,9)=xkn1
  1360. rel(9,6)=-xkn1
  1361. rel(9,3)= -xkn2
  1362. rel(9,12)= xkn2
  1363. endif
  1364. do ia = 1, 4
  1365. do ic = 1,4
  1366. do io=1,idim
  1367. do iu=1,idim
  1368. xpa(io,iu)= rel( ia*idim-idim+io,ic*idim -idim +iu)
  1369. enddo
  1370. enddo
  1371. call prodt(xpb,xpa,bpss,idim,idim)
  1372. do io=1,idim
  1373. do iu=1,idim
  1374. rell( ia*idim-idim+io,ic*idim -idim +iu) = xpb(io,iu)
  1375. enddo
  1376. enddo
  1377. enddo
  1378. enddo
  1379. C
  1380. C REMPLISSAGE DE XMATRI
  1381. C
  1382. CALL REMPMT(RELL,LRE,RE(1,1,IB))
  1383. 3271 continue
  1384. SEGDES XMATRI
  1385. SEGSUP WRK1,WRK3,WRK4
  1386. GOTO 510
  1387. c cccccc
  1388. C_______________________________________________________________________
  1389. C
  1390. C SECTEUR DE CALCUL POUR LE COA2
  1391. C
  1392. C_______________________________________________________________________
  1393. C
  1394. 272 continue
  1395. NBNO=NBNN
  1396. NBBB=NBNN
  1397. SEGINI WRK1,WRK2,WRK4
  1398. C
  1399. C BOUCLE POUR TOUS LES ELEMENTS
  1400. C
  1401. DO 2721 IB=1,NBELEM
  1402. C
  1403. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  1404. C
  1405. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1406. C
  1407. CALL ZERO (REL,LRE,LRE)
  1408. C
  1409. C CALCUL DES AXES LOCAUX
  1410. C
  1411. CALL CO2LOC(XE,SHPTOT,NBNN,XEL,BPSS,NOQUAL,IDIM)
  1412. DO 2722 IGAU=1,NBPGAU
  1413. C
  1414. C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU
  1415. C
  1416. CALL BCO2(IGAU,MFR,IFOUR,NIFOUR,XEL,BPSS,SHPTOT,SHPWRK,
  1417. . BGENE,DJAC,IRRT,IDIM,NBNN,NSTRS,LRE)
  1418. IF(IRRT.NE.0) THEN
  1419. INTERR(1)=IB
  1420. CALL ERREUR(764)
  1421. GOTO 9985
  1422. ENDIF
  1423.  
  1424. C
  1425. C
  1426. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  1427. C
  1428. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1429. xv1= xe(1,2)-xe(1,1)
  1430. yv1= xe(2,2)-xe(2,1)
  1431. zv1=0.d0
  1432. if( idim.eq.3) zv1 = xe(3,2)-xe(3,1)
  1433. xl= sqrt(xv1*xv1 + yv1*yv1 + zv1*zv1)
  1434. C
  1435. C recuperation de la section et calcul du diamètre
  1436. C
  1437. MPTVAL=IVACAR
  1438. DO 2729 ICOMP=1,NCARR
  1439. MELVAL=IVAL(ICOMP)
  1440. IGMN = VELCHE(/1)
  1441. IBMN=MIN(IB,VELCHE(/2))
  1442. SECA =VELCHE(IGMN,IBMN)
  1443. 2729 CONTINUE
  1444. diam = sqrt(4.d0*SECA/xpi)
  1445. C
  1446. DJAC=DJAC*POIGAU(IGAU)
  1447. C
  1448. C CALCUL DE LA MATRICE DE HOOK
  1449. C
  1450. MPTVAL=IVAMAT
  1451. IF(IMAT.EQ.2) THEN
  1452. MELVAL=IVAL(1)
  1453. IBMN=MIN(IB ,IELCHE(/2))
  1454. IGMN=MIN(IGAU,IELCHE(/1))
  1455. MLREEL=IELCHE(IGMN,IBMN)
  1456. SEGACT MLREEL
  1457. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1458. 1 CALL DOHOCO(PROG,LHOOK,DDHOOK,XL,DIAM)
  1459. SEGDES MLREEL
  1460. ELSE IF (IMAT.EQ.1) THEN
  1461. DO 2723 IM=1,NMATT
  1462. IF (IVAL(IM).NE.0) THEN
  1463. MELVAL=IVAL(IM)
  1464. IBMN=MIN(IB ,VELCHE(/2))
  1465. IGMN=MIN(IGAU,VELCHE(/1))
  1466. VALMAT(IM)=VELCHE(IGMN,IBMN)
  1467. ELSE
  1468. VALMAT(IM)=0.D0
  1469. ENDIF
  1470. 2723 CONTINUE
  1471. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1472. 1 CALL DOUCO2(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD,XL,DIAM)
  1473. END IF
  1474. C
  1475. C CALCUL ET INTEGRATION DE BDB
  1476. C
  1477. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  1478.  
  1479.  
  1480. 2722 CONTINUE
  1481. C
  1482. do ia = 1,4
  1483. do ic = 1,4
  1484. do io=1,idim
  1485. do iu=1,idim
  1486. xpa(io,iu)= rel( ia*idim-idim+io,ic*idim -idim +iu)
  1487. enddo
  1488. enddo
  1489. call prodt(xpb,xpa,bpss,idim,idim)
  1490. do io=1,idim
  1491. do iu=1,idim
  1492. rell( ia*idim-idim+io,ic*idim -idim +iu) = xpb(io,iu)
  1493. enddo
  1494. enddo
  1495. enddo
  1496. enddo
  1497. C
  1498. C REMPLISSAGE DE XMATRI
  1499. C
  1500. CALL REMPMT(RELL,LRE,RE(1,1,IB))
  1501. 2721 CONTINUE
  1502. C
  1503. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  1504. C
  1505. IF (IRTD.EQ.0) THEN
  1506. MOTERR(1:8) = CMATE
  1507. MOTERR(9:16) = NOMFR(MFR/2+1)
  1508. INTERR(1) = IFOUR
  1509. CALL ERREUR(81)
  1510. ENDIF
  1511. C
  1512. c SEGDES XMATRI
  1513. 9985 CONTINUE
  1514. SEGSUP WRK1,WRK2,WRK4,MVELCH
  1515. GOTO 510
  1516. *-----------------------------------------------------------------------
  1517. C_______________________________________________________________________
  1518. C
  1519. C SECTEUR DE CALCUL POUR LE JOI2
  1520. C
  1521. C_______________________________________________________________________
  1522. C
  1523. 85 CONTINUE
  1524. NBNO=NBNN
  1525. NBBB=NBNN
  1526. SEGINI WRK1,WRK2,WRK4
  1527. C
  1528. C BOUCLE POUR TOUS LES ELEMENTS
  1529. C
  1530. DO 3085 IB=1,NBELEM
  1531. C
  1532. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  1533. C
  1534. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1535. C
  1536. CALL ZERO (REL,LRE,LRE)
  1537. C
  1538. C CALCUL DES AXES LOCAUX
  1539. C
  1540. CALL JO2LOC(XE,SHPTOT,NBNO,XEL,BPSS,NOQUAL)
  1541. C
  1542. CCC IF (NOQUAL.EQ.1) THEN
  1543. CCCC NOEUDS TROP VOISINS
  1544. CCC INTERR(1)=IB
  1545. CCCC *******MESSAGE D'ERREUR 323 A ADAPTER AUX JOINTS
  1546. CCC CALL ERREUR(323)
  1547. CCC ELSE IF ( NOQUAL.EQ.2 ) THEN
  1548. CCCC JOINT NON PLAN
  1549. CCC INTERR(1)=IB
  1550. CCCC *******MESSAGE D'ERREUR 323 A ADAPTER AUX JOINTS
  1551. CCC CALL ERREUR(323)
  1552. CCC RETURN
  1553. CCC ENDIF
  1554. C
  1555. C BOUCLE SUR LES POINTS DE GAUSS
  1556. C
  1557. DO 4085 IGAU=1,NBPGAU
  1558. C
  1559. C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU
  1560. C
  1561. CALL BJO2(IGAU,MFR,IFOUR,NIFOUR,XEL,BPSS,SHPTOT,SHPWRK,
  1562. + BGENE,DJAC,IRRT)
  1563. DJAC=DJAC*POIGAU(IGAU)
  1564.  
  1565. *
  1566. IF (IFOUR.EQ.0) THEN
  1567. C
  1568. C EN AXISYMETRIE, ON MULTIPLIE PAR R
  1569. C (R=RAYON DE COURBURE DU POINT DE GAUSS)
  1570. C
  1571. RAYON=0.0D0
  1572. NUMSUP=NBNO/2
  1573. *
  1574. DO 5085 IRAY=1,NUMSUP
  1575. RAYON=RAYON +( SHPTOT(1,IRAY,IGAU)*XE(1,IRAY) )
  1576. 5085 CONTINUE
  1577. * modif TC
  1578. * dr = XE(1,2)-xe(1,1)
  1579. * ra= XE(1,1)
  1580. * rb= XE(1,2)
  1581. * rayona = rb*rb*rb/6.d0 - 0.5d0*ra*ra*rb +ra*ra*ra /3.d0
  1582. * rayona=rayona *2.d0 /dr / dr
  1583. * rayonb= rb*rb*rb/3.d0 - 0.5d0*ra*rb*rb +ra*ra*ra /6.d0
  1584. * rayonb=rayonb *2.d0 / dr / dr
  1585.  
  1586. * rayon= rayona
  1587. * if(igau.eq.2) rayon=rayonb
  1588. DJAC=DJAC*RAYON
  1589. ENDIF
  1590. C
  1591. C IRRT=1 JACOBIEN <= 0
  1592. IF(IRRT.NE.0) THEN
  1593. INTERR(1)=IB
  1594. CALL ERREUR(612)
  1595. ENDIF
  1596. C
  1597. C CALCUL DE LA MATRICE DE HOOK
  1598. C
  1599. MPTVAL=IVAMAT
  1600. IF(IMAT.EQ.2) THEN
  1601. MELVAL=IVAL(1)
  1602. IBMN=MIN(IB ,IELCHE(/2))
  1603. IGMN=MIN(IGAU,IELCHE(/1))
  1604. MLREEL=IELCHE(IGMN,IBMN)
  1605. SEGACT MLREEL
  1606. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1607. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  1608. SEGDES MLREEL
  1609. ELSE IF (IMAT.EQ.1) THEN
  1610. DO 9085 IM=1,NMATT
  1611. IF (IVAL(IM).NE.0) THEN
  1612. MELVAL=IVAL(IM)
  1613. IBMN=MIN(IB ,VELCHE(/2))
  1614. IGMN=MIN(IGAU,VELCHE(/1))
  1615. VALMAT(IM)=VELCHE(IGMN,IBMN)
  1616. ELSE
  1617. VALMAT(IM)=0.D0
  1618. ENDIF
  1619. 9085 CONTINUE
  1620. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1621. 1 CALL DOUO88(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  1622. ENDIF
  1623. C
  1624. C CALCUL ET INTEGRATION DE BDB
  1625. C
  1626. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  1627. 4085 CONTINUE
  1628. C
  1629. * SEGINI XMATRI
  1630. * IMATTT(IB)=XMATRI
  1631. C
  1632. C REMPLISSAGE DE XMATRI
  1633. C
  1634. CALL REMPMT(REL,LRE,RE(1,1,IB))
  1635. * SEGDES XMATRI
  1636. 3085 CONTINUE
  1637. C
  1638. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  1639. C
  1640. IF (IRTD.EQ.0) THEN
  1641. MOTERR(1:8) = CMATE
  1642. MOTERR(9:16) = NOMFR(MFR/2+1)
  1643. INTERR(1) = IFOUR
  1644. CALL ERREUR(81)
  1645. ENDIF
  1646. C
  1647. SEGDES XMATRI
  1648. SEGSUP WRK1,WRK2,WRK4,MVELCH
  1649. GOTO 510
  1650. C_______________________________________________________________________
  1651. C
  1652. C SECTEUR DE CALCUL POUR LE JGI2
  1653. C
  1654. C_______________________________________________________________________
  1655. C
  1656. 170 CONTINUE
  1657. NBNO=NBNN
  1658. NBBB=NBNN
  1659. SEGINI WRK1,WRK2,WRK4
  1660. C
  1661. C BOUCLE POUR TOUS LES ELEMENTS
  1662. C
  1663. DO IB=1,NBELEM
  1664. C
  1665. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  1666. C
  1667. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1668. C
  1669. CALL ZERO (REL,LRE,LRE)
  1670. C
  1671. C CALCUL DES AXES LOCAUX
  1672. C
  1673. CALL JO2LOC(XE,SHPTOT,NBNO,XEL,BPSS,NOQUAL)
  1674. C
  1675. C BOUCLE SUR LES POINTS DE GAUSS
  1676. C
  1677. DO IGAU=1,NBPGAU
  1678. C
  1679. C ON CHERCHE L EPAISSEUR DU JOINT
  1680. C
  1681. EPAIST=0.D0
  1682. MPTVAL=IVACAR
  1683. MELVAL=IVAL(1)
  1684. IF (MELVAL.NE.0) THEN
  1685. IGMN=MIN(IGAU,VELCHE(/1))
  1686. IBMN=MIN(IB,VELCHE(/2))
  1687. EPAIST=VELCHE(IGMN,IBMN)
  1688. ENDIF
  1689. C
  1690. C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU
  1691. C
  1692. CcPPj CALL BJO2GN(IGAU,MFR,IFOUR,NIFOUR,XEL,BPSS,SHPTOT,SHPWRK,
  1693. CcPPj. EPAIST,BGENE,DJAC,XDPGE,YDPGE,IRRT)
  1694. CALL BJO2GN(IGAU,MFR,IFOUR,NIFOUR,XE,XEL,BPSS,SHPTOT,SHPWRK,
  1695. . EPAIST,BGENE,DJAC,XDPGE,YDPGE,IRRT)
  1696. DJAC=DJAC*POIGAU(IGAU)
  1697. C
  1698. IF (IFOUR.EQ.0) THEN
  1699. C
  1700. C EN AXISYMETRIE, ON MULTIPLIE PAR R
  1701. C (R=RAYON DE COURBURE DU POINT DE GAUSS)
  1702. C
  1703. RAYON=0.0D0
  1704. NUMSUP=NBNO/2
  1705. DO IRAY=1,NUMSUP
  1706. RAYON=RAYON +( SHPTOT(1,IRAY,IGAU)*XE(1,IRAY) )
  1707. ENDDO
  1708. DJAC=DJAC*RAYON
  1709. ENDIF
  1710. C
  1711. C IRRT=1 JACOBIEN <= 0
  1712. IF(IRRT.NE.0) THEN
  1713. INTERR(1)=IB
  1714. CALL ERREUR(612)
  1715. ENDIF
  1716. C
  1717. C CALCUL DE LA MATRICE DE HOOK
  1718. C
  1719. MPTVAL=IVAMAT
  1720. IF(IMAT.EQ.2) THEN
  1721. MELVAL=IVAL(1)
  1722. IBMN=MIN(IB ,IELCHE(/2))
  1723. IGMN=MIN(IGAU,IELCHE(/1))
  1724. MLREEL=IELCHE(IGMN,IBMN)
  1725. SEGACT MLREEL
  1726. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1727. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  1728. SEGDES MLREEL
  1729. ELSE IF (IMAT.EQ.1) THEN
  1730. DO IM=1,NMATT
  1731. IF (IVAL(IM).NE.0) THEN
  1732. MELVAL=IVAL(IM)
  1733. IBMN=MIN(IB ,VELCHE(/2))
  1734. IGMN=MIN(IGAU,VELCHE(/1))
  1735. VALMAT(IM)=VELCHE(IGMN,IBMN)
  1736. ELSE
  1737. VALMAT(IM)=0.D0
  1738. ENDIF
  1739. ENDDO
  1740. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1741. 1 CALL DOGO88(VALMAT,CMATE,EPAIST,IFOUR,LHOOK,DDHOOK,IRTD)
  1742. ENDIF
  1743. C
  1744. C CALCUL ET INTEGRATION DE BDB
  1745. C
  1746. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  1747. ENDDO
  1748. C
  1749. * SEGINI XMATRI
  1750. * IMATTT(IB)=XMATRI
  1751. C
  1752. C REMPLISSAGE DE XMATRI
  1753. C
  1754. CALL REMPMT(REL,LRE,RE(1,1,IB))
  1755. * SEGDES XMATRI
  1756. ENDDO
  1757. C
  1758. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  1759. C
  1760. IF (IRTD.EQ.0) THEN
  1761. MOTERR(1:8) = CMATE
  1762. MOTERR(9:16) = NOMFR(MFR/2+1)
  1763. INTERR(1) = IFOUR
  1764. CALL ERREUR(81)
  1765. ENDIF
  1766. C
  1767. SEGDES XMATRI
  1768. SEGSUP WRK1,WRK2,WRK4,MVELCH
  1769. GOTO 510
  1770. C_______________________________________________________________________
  1771. C
  1772. C SECTEUR DE CALCUL POUR LE JCT3 en 2D cisaillement
  1773. C
  1774. C_______________________________________________________________________
  1775. C
  1776. 168 CONTINUE
  1777. NBNO=NBNN
  1778. NBBB=NBNN
  1779. SEGINI WRK1,WRK2,WRK4
  1780. C
  1781. C BOUCLE POUR TOUS LES ELEMENTS
  1782. C
  1783. DO IB=1,NBELEM
  1784. C
  1785. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  1786. C
  1787. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1788. C
  1789. CALL ZERO (REL,LRE,LRE)
  1790. C
  1791. C CALCUL DES AXES LOCAUX
  1792. C
  1793. CALL JT3LOC(XE,SHPTOT,NBNO,XEL,BPSS,NOQUAL)
  1794. C
  1795. IF (NOQUAL.EQ.1) THEN
  1796. INTERR(1)=IB
  1797. MOTERR(1:4) = 'JGT3'
  1798. CALL ERREUR(765)
  1799. RETURN
  1800. ELSE IF ( NOQUAL.EQ.2) THEN
  1801. INTERR(1)=IB
  1802. MOTERR(1:4) = 'JGT3'
  1803. CALL ERREUR(766)
  1804. RETURN
  1805. ENDIF
  1806. C
  1807. C BOUCLE SUR LES POINTS DE GAUSS
  1808. C
  1809. DO IGAU=1,NBPGAU
  1810. C 4
  1811. C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU
  1812. C
  1813. CALL BJT3C(IGAU,MFR,IFOUR,NIFOUR,XEL,BPSS,SHPTOT,SHPWRK,
  1814. + BGENE,DJAC,IRRT)
  1815. DJAC=DJAC*POIGAU(IGAU)
  1816. C IRRT=1 JACOBIEN <= 0
  1817. IF(IRRT.NE.0) THEN
  1818. CALL ERREUR(764)
  1819. ENDIF
  1820. C
  1821. C CALCUL DE LA MATRICE DE HOOK
  1822. C
  1823. MPTVAL=IVAMAT
  1824. IF(IMAT.EQ.2) THEN
  1825. MELVAL=IVAL(1)
  1826. IBMN=MIN(IB ,IELCHE(/2))
  1827. IGMN=MIN(IGAU,IELCHE(/1))
  1828. MLREEL=IELCHE(IGMN,IBMN)
  1829. SEGACT MLREEL
  1830. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1831. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  1832. SEGDES MLREEL
  1833. ELSE IF (IMAT.EQ.1) THEN
  1834. DO IM=1,NMATT
  1835. IF (IVAL(IM).NE.0) THEN
  1836. MELVAL=IVAL(IM)
  1837. IBMN=MIN(IB ,VELCHE(/2))
  1838. IGMN=MIN(IGAU,VELCHE(/1))
  1839. VALMAT(IM)=VELCHE(IGMN,IBMN)
  1840. ELSE
  1841. VALMAT(IM)=0.D0
  1842. ENDIF
  1843. ENDDO
  1844. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1845. 1 CALL DOCO88(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  1846. ENDIF
  1847. C
  1848. C CALCUL ET INTEGRATION DE BDB
  1849. C
  1850. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  1851. ENDDO
  1852. C
  1853. * SEGINI XMATRI
  1854. * IMATTT(IB)=XMATRI
  1855. C
  1856. C REMPLISSAGE DE XMATRI
  1857. C
  1858. CALL REMPMT(REL,LRE,RE(1,1,IB))
  1859. * SEGDES XMATRI
  1860. ENDDO
  1861. C
  1862. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  1863. C
  1864. IF (IRTD.EQ.0) THEN
  1865. MOTERR(1:8) = CMATE
  1866. MOTERR(9:16) = NOMFR(MFR/2+1)
  1867. INTERR(1) = IFOUR
  1868. CALL ERREUR(81)
  1869. ENDIF
  1870. C
  1871. SEGDES XMATRI
  1872. SEGSUP WRK1,WRK2,WRK4,MVELCH
  1873. GOTO 510
  1874. C_______________________________________________________________________
  1875. C
  1876. C SECTEUR DE CALCUL POUR LE JGT3 GENERALISE
  1877. C
  1878. C_______________________________________________________________________
  1879. C
  1880. 171 CONTINUE
  1881. NBNO=NBNN
  1882. NBBB=NBNN
  1883. SEGINI WRK1,WRK2,WRK4
  1884. C
  1885. C BOUCLE POUR TOUS LES ELEMENTS
  1886. C
  1887. DO IB=1,NBELEM
  1888. C
  1889. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  1890. C
  1891. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1892. C
  1893. CALL ZERO (REL,LRE,LRE)
  1894. C
  1895. C CALCUL DES AXES LOCAUX
  1896. C
  1897. CALL JT3LOC(XE,SHPTOT,NBNO,XEL,BPSS,NOQUAL)
  1898. C
  1899. IF (NOQUAL.EQ.1) THEN
  1900. INTERR(1)=IB
  1901. MOTERR(1:4) = 'JGT3'
  1902. CALL ERREUR(765)
  1903. RETURN
  1904. ELSE IF ( NOQUAL.EQ.2) THEN
  1905. INTERR(1)=IB
  1906. MOTERR(1:4) = 'JGT3'
  1907. CALL ERREUR(766)
  1908. RETURN
  1909. ENDIF
  1910. C
  1911. C BOUCLE SUR LES POINTS DE GAUSS
  1912. C
  1913. DO IGAU=1,NBPGAU
  1914. C
  1915. C ON CHERCHE L'EPAISSEUR DU JOINT
  1916. C
  1917. EPAIST=0.D0
  1918. MPTVAL=IVACAR
  1919. MELVAL=IVAL(1)
  1920. IF (MELVAL.NE.0) THEN
  1921. IGMN=MIN(IGAU,VELCHE(/1))
  1922. IBMN=MIN(IB,VELCHE(/2))
  1923. EPAIST=VELCHE(IGMN,IBMN)
  1924. ENDIF
  1925. C 4
  1926. C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU
  1927. C
  1928. CcPPj CALL BJT3G(IGAU,MFR,IFOUR,NIFOUR,XEL,BPSS,SHPTOT,SHPWRK,
  1929. CALL BJT3G(IGAU,MFR,IFOUR,NIFOUR,XE,XEL,BPSS,SHPTOT,SHPWRK,
  1930. + EPAIST,BGENE,DJAC,IRRT)
  1931. DJAC=DJAC*POIGAU(IGAU)
  1932. C IRRT=1 JACOBIEN <= 0
  1933. IF(IRRT.NE.0) THEN
  1934. CALL ERREUR(764)
  1935. ENDIF
  1936. C
  1937. C CALCUL DE LA MATRICE DE HOOK
  1938. C
  1939. MPTVAL=IVAMAT
  1940. IF(IMAT.EQ.2) THEN
  1941. MELVAL=IVAL(1)
  1942. IBMN=MIN(IB ,IELCHE(/2))
  1943. IGMN=MIN(IGAU,IELCHE(/1))
  1944. MLREEL=IELCHE(IGMN,IBMN)
  1945. SEGACT MLREEL
  1946. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1947. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  1948. SEGDES MLREEL
  1949. ELSE IF (IMAT.EQ.1) THEN
  1950. DO IM=1,NMATT
  1951. IF (IVAL(IM).NE.0) THEN
  1952. MELVAL=IVAL(IM)
  1953. IBMN=MIN(IB ,VELCHE(/2))
  1954. IGMN=MIN(IGAU,VELCHE(/1))
  1955. VALMAT(IM)=VELCHE(IGMN,IBMN)
  1956. ELSE
  1957. VALMAT(IM)=0.D0
  1958. ENDIF
  1959. ENDDO
  1960. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1961. 1 CALL DOGO88(VALMAT,CMATE,EPAIST,IFOUR,LHOOK,DDHOOK,IRTD)
  1962. ENDIF
  1963. C
  1964. C CALCUL ET INTEGRATION DE BDB
  1965. C
  1966. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  1967. ENDDO
  1968. C
  1969. * SEGINI XMATRI
  1970. * IMATTT(IB)=XMATRI
  1971. C
  1972. C REMPLISSAGE DE XMATRI
  1973. C
  1974. CALL REMPMT(REL,LRE,RE(1,1,IB))
  1975. * SEGDES XMATRI
  1976. ENDDO
  1977. C
  1978. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  1979. C
  1980. IF (IRTD.EQ.0) THEN
  1981. MOTERR(1:8) = CMATE
  1982. MOTERR(9:16) = NOMFR(MFR/2+1)
  1983. INTERR(1) = IFOUR
  1984. CALL ERREUR(81)
  1985. ENDIF
  1986. C
  1987. SEGDES XMATRI
  1988. SEGSUP WRK1,WRK2,WRK4,MVELCH
  1989. GOTO 510
  1990. C_______________________________________________________________________
  1991. C
  1992. C SECTEUR DE CALCUL POUR LE JCI4 en 2D cisaillement
  1993. C
  1994. C_______________________________________________________________________
  1995. C
  1996. 169 CONTINUE
  1997. NBNO=NBNN
  1998. NBBB=NBNN
  1999. SEGINI WRK1,WRK2,WRK4
  2000. C
  2001. C BOUCLE POUR TOUS LES ELEMENTS
  2002. C
  2003. DO IB=1,NBELEM
  2004. C
  2005. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  2006. C
  2007. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  2008. C
  2009. CALL ZERO (REL,LRE,LRE)
  2010. C
  2011. C CALCUL DES AXES LOCAUX
  2012. C
  2013. CALL JO4LOC(XE,SHPTOT,NBNO,XEL,BPSS,NOQUAL)
  2014.  
  2015. IF (NOQUAL.EQ.1) THEN
  2016. INTERR(1)=IB
  2017. MOTERR(1:4) = 'JCI4'
  2018. CALL ERREUR(765)
  2019. RETURN
  2020. ELSE IF ( NOQUAL.EQ.2 ) THEN
  2021. INTERR(1)=IB
  2022. MOTERR(1:4) = 'JCI4'
  2023. CALL ERREUR(766)
  2024. RETURN
  2025. ENDIF
  2026. C
  2027. C BOUCLE SUR LES POINTS DE GAUSS
  2028. C
  2029. DO IGAU=1,NBPGAU
  2030. C
  2031. C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU
  2032. C
  2033. CALL BJO4C(IGAU,XEL,BPSS,SHPTOT,SHPWRK,BGENE,DJAC,IRRT)
  2034. DJAC=DJAC*POIGAU(IGAU)
  2035. C IRRT=1 JACOBIEN <= 0
  2036. IF(IRRT.NE.0) THEN
  2037. INTERR(1)=IB
  2038. CALL ERREUR(611)
  2039. ENDIF
  2040. C
  2041. C CALCUL DE LA MATRICE DE HOOK
  2042. C
  2043. MPTVAL=IVAMAT
  2044. IF(IMAT.EQ.2) THEN
  2045. MELVAL=IVAL(1)
  2046. IBMN=MIN(IB ,IELCHE(/2))
  2047. IGMN=MIN(IGAU,IELCHE(/1))
  2048. MLREEL=IELCHE(IGMN,IBMN)
  2049. SEGACT MLREEL
  2050. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2051. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  2052. SEGDES MLREEL
  2053. ELSE IF (IMAT.EQ.1) THEN
  2054. DO IM=1,NMATT
  2055. IF (IVAL(IM).NE.0) THEN
  2056. MELVAL=IVAL(IM)
  2057. IBMN=MIN(IB ,VELCHE(/2))
  2058. IGMN=MIN(IGAU,VELCHE(/1))
  2059. VALMAT(IM)=VELCHE(IGMN,IBMN)
  2060. ELSE
  2061. VALMAT(IM)=0.D0
  2062. ENDIF
  2063. ENDDO
  2064. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2065. 1 CALL DOCO88(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  2066. ENDIF
  2067. C
  2068. C CALCUL ET INTEGRATION DE BDB
  2069. C
  2070. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  2071. ENDDO
  2072. C
  2073. * SEGINI XMATRI
  2074. * IMATTT(IB)=XMATRI
  2075. C
  2076. C REMPLISSAGE DE XMATRI
  2077. C
  2078. CALL REMPMT(REL,LRE,RE(1,1,IB))
  2079. * SEGDES XMATRI
  2080. ENDDO
  2081. C
  2082. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  2083. C
  2084. IF (IRTD.EQ.0) THEN
  2085. MOTERR(1:8) = CMATE
  2086. MOTERR(9:16) = NOMFR(MFR/2+1)
  2087. INTERR(1) = IFOUR
  2088. CALL ERREUR(81)
  2089. ENDIF
  2090. C
  2091. SEGDES XMATRI
  2092. SEGSUP WRK1,WRK2,WRK4,MVELCH
  2093. GOTO 510
  2094. C_______________________________________________________________________
  2095. C
  2096. C SECTEUR DE CALCUL POUR LE JGI4 GENERALISE
  2097. C
  2098. C_______________________________________________________________________
  2099. C
  2100. 172 CONTINUE
  2101. NBNO=NBNN
  2102. NBBB=NBNN
  2103. SEGINI WRK1,WRK2,WRK4
  2104. C
  2105. C BOUCLE POUR TOUS LES ELEMENTS
  2106. C
  2107. DO IB=1,NBELEM
  2108. C
  2109. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  2110. C
  2111. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  2112. C
  2113. CALL ZERO (REL,LRE,LRE)
  2114. C
  2115. C CALCUL DES AXES LOCAUX
  2116. C
  2117. CALL JO4LOC(XE,SHPTOT,NBNO,XEL,BPSS,NOQUAL)
  2118.  
  2119. IF (NOQUAL.EQ.1) THEN
  2120. INTERR(1)=IB
  2121. MOTERR(1:4) = 'JGI4'
  2122. CALL ERREUR(765)
  2123. RETURN
  2124. ELSE IF ( NOQUAL.EQ.2 ) THEN
  2125. CbPPj INTERR(1)=IB
  2126. CbPPj MOTERR(1:4) = 'JGI4'
  2127. CbPPj CALL ERREUR(766)
  2128. CbPPj RETURN
  2129. WRITE(IOIMP,*)'RIGI4(WARNING): JGI4 element number',IB,
  2130. . ' not planar'
  2131. ENDIF
  2132. C
  2133. C BOUCLE SUR LES POINTS DE GAUSS
  2134. C
  2135. DO IGAU=1,NBPGAU
  2136. C
  2137. C ON CHERCHE L'EPAISSEUR DU JOINT
  2138. C
  2139. EPAIST=0.D0
  2140. MPTVAL=IVACAR
  2141. MELVAL=IVAL(1)
  2142. IF (MELVAL.NE.0) THEN
  2143. IGMN=MIN(IGAU,VELCHE(/1))
  2144. IBMN=MIN(IB,VELCHE(/2))
  2145. EPAIST=VELCHE(IGMN,IBMN)
  2146. ENDIF
  2147. C
  2148. C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU
  2149. C
  2150. CcPPj CALL BJO4G(IGAU,XEL,BPSS,SHPTOT,SHPWRK,EPAIST,BGENE,DJAC,IRRT)
  2151. CALL BJO4G(IGAU,XE,XEL,BPSS,SHPTOT,SHPWRK,EPAIST,BGENE,DJAC,
  2152. . IRRT)
  2153. DJAC=DJAC*POIGAU(IGAU)
  2154. C IRRT=1 JACOBIEN <= 0
  2155. IF(IRRT.NE.0) THEN
  2156. INTERR(1)=IB
  2157. CALL ERREUR(611)
  2158. ENDIF
  2159. C
  2160. C CALCUL DE LA MATRICE DE HOOK
  2161. C
  2162. MPTVAL=IVAMAT
  2163. IF(IMAT.EQ.2) THEN
  2164. MELVAL=IVAL(1)
  2165. IBMN=MIN(IB ,IELCHE(/2))
  2166. IGMN=MIN(IGAU,IELCHE(/1))
  2167. MLREEL=IELCHE(IGMN,IBMN)
  2168. SEGACT MLREEL
  2169. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2170. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  2171. SEGDES MLREEL
  2172. ELSE IF (IMAT.EQ.1) THEN
  2173. DO IM=1,NMATT
  2174. IF (IVAL(IM).NE.0) THEN
  2175. MELVAL=IVAL(IM)
  2176. IBMN=MIN(IB ,VELCHE(/2))
  2177. IGMN=MIN(IGAU,VELCHE(/1))
  2178. VALMAT(IM)=VELCHE(IGMN,IBMN)
  2179. ELSE
  2180. VALMAT(IM)=0.D0
  2181. ENDIF
  2182. ENDDO
  2183. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2184. 1 CALL DOGO88(VALMAT,CMATE,EPAIST,IFOUR,LHOOK,DDHOOK,IRTD)
  2185. ENDIF
  2186. C
  2187. C CALCUL ET INTEGRATION DE BDB
  2188. C
  2189. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  2190. ENDDO
  2191. C
  2192. * SEGINI XMATRI
  2193. * IMATTT(IB)=XMATRI
  2194. C
  2195. C REMPLISSAGE DE XMATRI
  2196. C
  2197. CALL REMPMT(REL,LRE,RE(1,1,IB))
  2198. * SEGDES XMATRI
  2199. ENDDO
  2200. C
  2201. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  2202. C
  2203. IF (IRTD.EQ.0) THEN
  2204. MOTERR(1:8) = CMATE
  2205. MOTERR(9:16) = NOMFR(MFR/2+1)
  2206. INTERR(1) = IFOUR
  2207. CALL ERREUR(81)
  2208. ENDIF
  2209. C
  2210. SEGDES XMATRI
  2211. SEGSUP WRK1,WRK2,WRK4,MVELCH
  2212. GOTO 510
  2213. C
  2214. C_______________________________________________________________________
  2215. C
  2216. C SECTEUR DE CALCUL POUR LE JOI3 SANS TEST DE PLANEITE
  2217. C ET SANS REPERE LOCAL
  2218. C
  2219. C_______________________________________________________________________
  2220. C
  2221. 86 CONTINUE
  2222. NBNO=NBNN
  2223. NBBB=NBNN
  2224. SEGINI WRK1,WRK2,WRK4
  2225. C
  2226. C BOUCLE POUR TOUS LES ELEMENTS
  2227. C
  2228. DO 3086 IB=1,NBELEM
  2229. C
  2230. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  2231. C
  2232. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  2233. C
  2234. CALL ZERO (REL,LRE,LRE)
  2235. C
  2236. C BOUCLE SUR LES POINTS DE GAUSS
  2237. C
  2238. DO 4086 IGAU=1,NBPGAU
  2239. C
  2240. C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU
  2241. C
  2242.  
  2243. CALL JO3LOC(XE,SHPTOT,IGAU,NBNO,BPSS)
  2244. CALL BJO3(IGAU,MFR,IFOUR,NIFOUR,XE,BPSS,SHPTOT,SHPWRK,
  2245. + BGENE,DJAC,IRRT)
  2246. DJAC=DJAC*POIGAU(IGAU)
  2247. *
  2248. IF (IFOUR.EQ.0) THEN
  2249. C
  2250. C EN AXISYMETRIE, ON MULTIPLIE PAR R
  2251. C (R=RAYON DE COURBURE DU POINT DE GAUSS)
  2252. C
  2253. RAYON=0.0D0
  2254. NUMSUP=NBNO/2
  2255. DO 5086 IRAY=1,NUMSUP
  2256. RAYON=RAYON +( SHPTOT(1,IRAY,IGAU)*XE(1,IRAY) )
  2257. 5086 CONTINUE
  2258. DJAC=DJAC*RAYON
  2259. ENDIF
  2260. C
  2261. C IRRT=1 JACOBIEN <= 0
  2262. IF(IRRT.NE.0) THEN
  2263. INTERR(1)=IB
  2264. CALL ERREUR(612)
  2265. ENDIF
  2266. C
  2267. C CALCUL DE LA MATRICE DE HOOK
  2268. C
  2269. MPTVAL=IVAMAT
  2270. IF(IMAT.EQ.2) THEN
  2271. MELVAL=IVAL(1)
  2272. IBMN=MIN(IB ,IELCHE(/2))
  2273. IGMN=MIN(IGAU,IELCHE(/1))
  2274. MLREEL=IELCHE(IGMN,IBMN)
  2275. SEGACT MLREEL
  2276. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2277. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  2278. SEGDES MLREEL
  2279. ELSE IF (IMAT.EQ.1) THEN
  2280. DO 9086 IM=1,NMATT
  2281. IF (IVAL(IM).NE.0) THEN
  2282. MELVAL=IVAL(IM)
  2283. IBMN=MIN(IB ,VELCHE(/2))
  2284. IGMN=MIN(IGAU,VELCHE(/1))
  2285. VALMAT(IM)=VELCHE(IGMN,IBMN)
  2286. ELSE
  2287. VALMAT(IM)=0.D0
  2288. ENDIF
  2289. 9086 CONTINUE
  2290. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2291. 1 CALL DOUO88(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  2292. ENDIF
  2293. C
  2294. C CALCUL ET INTEGRATION DE BDB
  2295. C
  2296. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  2297. 4086 CONTINUE
  2298. C
  2299. * SEGINI XMATRI
  2300. * IMATTT(IB)=XMATRI
  2301. C
  2302. C REMPLISSAGE DE XMATRI
  2303. C
  2304. CALL REMPMT(REL,LRE,RE(1,1,IB))
  2305. * SEGDES XMATRI
  2306. 3086 CONTINUE
  2307. C
  2308. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  2309. C
  2310. IF (IRTD.EQ.0) THEN
  2311. MOTERR(1:8) = CMATE
  2312. MOTERR(9:16) = NOMFR(MFR/2+1)
  2313. INTERR(1) = IFOUR
  2314. CALL ERREUR(81)
  2315. ENDIF
  2316. C
  2317. SEGDES XMATRI
  2318. SEGSUP WRK1,WRK2,WRK4,MVELCH
  2319. GOTO 510
  2320. C_______________________________________________________________________
  2321. C
  2322. C SECTEUR DE CALCUL POUR LE JOT3
  2323. C
  2324. C_______________________________________________________________________
  2325. C
  2326. 87 CONTINUE
  2327. NBNO=NBNN
  2328. NBBB=NBNN
  2329. SEGINI WRK1,WRK2,WRK4
  2330. C
  2331. C BOUCLE POUR TOUS LES ELEMENTS
  2332. C
  2333. DO 3087 IB=1,NBELEM
  2334. C
  2335. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  2336. C
  2337. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  2338. C
  2339. CALL ZERO (REL,LRE,LRE)
  2340. C
  2341. C CALCUL DES AXES LOCAUX
  2342. C
  2343. CALL JT3LOC(XE,SHPTOT,NBNO,XEL,BPSS,NOQUAL)
  2344. C
  2345. IF (NOQUAL.EQ.1) THEN
  2346. INTERR(1)=IB
  2347. MOTERR(1:4) = 'JOT3'
  2348. CALL ERREUR(765)
  2349. RETURN
  2350. ELSE IF ( NOQUAL.EQ.2) THEN
  2351. INTERR(1)=IB
  2352. MOTERR(1:4) = 'JOT3'
  2353. CALL ERREUR(766)
  2354. RETURN
  2355. ENDIF
  2356. C
  2357. C BOUCLE SUR LES POINTS DE GAUSS
  2358. C
  2359. DO 4087 IGAU=1,NBPGAU
  2360. C 4
  2361. C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU
  2362. C
  2363. CALL BJT3(IGAU,MFR,IFOUR,NIFOUR,XEL,BPSS,SHPTOT,SHPWRK,
  2364. + BGENE,DJAC,IRRT)
  2365. DJAC=DJAC*POIGAU(IGAU)
  2366. C IRRT=1 JACOBIEN <= 0
  2367. IF(IRRT.NE.0) THEN
  2368. CALL ERREUR(764)
  2369. ENDIF
  2370. C
  2371. C CALCUL DE LA MATRICE DE HOOK
  2372. C
  2373. MPTVAL=IVAMAT
  2374. IF(IMAT.EQ.2) THEN
  2375. MELVAL=IVAL(1)
  2376. IBMN=MIN(IB ,IELCHE(/2))
  2377. IGMN=MIN(IGAU,IELCHE(/1))
  2378. MLREEL=IELCHE(IGMN,IBMN)
  2379. SEGACT MLREEL
  2380. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2381. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  2382. SEGDES MLREEL
  2383. ELSE IF (IMAT.EQ.1) THEN
  2384. DO 9087 IM=1,NMATT
  2385. IF (IVAL(IM).NE.0) THEN
  2386. MELVAL=IVAL(IM)
  2387. IBMN=MIN(IB ,VELCHE(/2))
  2388. IGMN=MIN(IGAU,VELCHE(/1))
  2389. VALMAT(IM)=VELCHE(IGMN,IBMN)
  2390. ELSE
  2391. VALMAT(IM)=0.D0
  2392. ENDIF
  2393. 9087 CONTINUE
  2394. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2395. 1 CALL DOUO88(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  2396. ENDIF
  2397. C
  2398. C CALCUL ET INTEGRATION DE BDB
  2399. C
  2400. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  2401. 4087 CONTINUE
  2402. C
  2403. * SEGINI XMATRI
  2404. * IMATTT(IB)=XMATRI
  2405. C
  2406. C REMPLISSAGE DE XMATRI
  2407. C
  2408. CALL REMPMT(REL,LRE,RE(1,1,IB))
  2409. * SEGDES XMATRI
  2410. 3087 CONTINUE
  2411. C
  2412. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  2413. C
  2414. IF (IRTD.EQ.0) THEN
  2415. MOTERR(1:8) = CMATE
  2416. MOTERR(9:16) = NOMFR(MFR/2+1)
  2417. INTERR(1) = IFOUR
  2418. CALL ERREUR(81)
  2419. ENDIF
  2420. C
  2421. SEGDES XMATRI
  2422. SEGSUP WRK1,WRK2,WRK4,MVELCH
  2423. GOTO 510
  2424. C_______________________________________________________________________
  2425. C
  2426. C SECTEUR DE CALCUL POUR LE JOI4
  2427. C
  2428. C_______________________________________________________________________
  2429. C
  2430. 88 CONTINUE
  2431. NBNO=NBNN
  2432. NBBB=NBNN
  2433. SEGINI WRK1,WRK2,WRK4
  2434. C
  2435. C BOUCLE POUR TOUS LES ELEMENTS
  2436. C
  2437. DO 3088 IB=1,NBELEM
  2438. C
  2439. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  2440. C
  2441. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  2442. C
  2443. CALL ZERO (REL,LRE,LRE)
  2444. C
  2445. C CALCUL DES AXES LOCAUX
  2446. C
  2447. CALL JO4LOC(XE,SHPTOT,NBNO,XEL,BPSS,NOQUAL)
  2448.  
  2449. IF (NOQUAL.EQ.1) THEN
  2450. INTERR(1)=IB
  2451. MOTERR(1:4) = 'JOI4'
  2452. CALL ERREUR(765)
  2453. RETURN
  2454. ELSE IF ( NOQUAL.EQ.2 ) THEN
  2455. INTERR(1)=IB
  2456. MOTERR(1:4) = 'JOI4'
  2457. CALL ERREUR(766)
  2458. RETURN
  2459. ENDIF
  2460. C
  2461. C BOUCLE SUR LES POINTS DE GAUSS
  2462. C
  2463. DO 4088 IGAU=1,NBPGAU
  2464. C
  2465. C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU
  2466. C
  2467. CALL BJO4(IGAU,XEL,BPSS,SHPTOT,SHPWRK,BGENE,DJAC,IRRT)
  2468. DJAC=DJAC*POIGAU(IGAU)
  2469. C IRRT=1 JACOBIEN <= 0
  2470. IF(IRRT.NE.0) THEN
  2471. INTERR(1)=IB
  2472. CALL ERREUR(611)
  2473. ENDIF
  2474. C
  2475. C CALCUL DE LA MATRICE DE HOOK
  2476. C
  2477. MPTVAL=IVAMAT
  2478. IF(IMAT.EQ.2) THEN
  2479. MELVAL=IVAL(1)
  2480. IBMN=MIN(IB ,IELCHE(/2))
  2481. IGMN=MIN(IGAU,IELCHE(/1))
  2482. MLREEL=IELCHE(IGMN,IBMN)
  2483. SEGACT MLREEL
  2484. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2485. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  2486. SEGDES MLREEL
  2487. ELSE IF (IMAT.EQ.1) THEN
  2488. DO 9088 IM=1,NMATT
  2489. IF (IVAL(IM).NE.0) THEN
  2490. MELVAL=IVAL(IM)
  2491. IBMN=MIN(IB ,VELCHE(/2))
  2492. IGMN=MIN(IGAU,VELCHE(/1))
  2493. VALMAT(IM)=VELCHE(IGMN,IBMN)
  2494. ELSE
  2495. VALMAT(IM)=0.D0
  2496. ENDIF
  2497. 9088 CONTINUE
  2498. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2499. 1 CALL DOUO88(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  2500. ENDIF
  2501. C
  2502. C CALCUL ET INTEGRATION DE BDB
  2503. C
  2504. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  2505. 4088 CONTINUE
  2506. C
  2507. * SEGINI XMATRI
  2508. * IMATTT(IB)=XMATRI
  2509. C
  2510. C REMPLISSAGE DE XMATRI
  2511. C
  2512. CALL REMPMT(REL,LRE,RE(1,1,IB))
  2513. * SEGDES XMATRI
  2514. 3088 CONTINUE
  2515. C
  2516. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  2517. C
  2518. IF (IRTD.EQ.0) THEN
  2519. MOTERR(1:8) = CMATE
  2520. MOTERR(9:16) = NOMFR(MFR/2+1)
  2521. INTERR(1) = IFOUR
  2522. CALL ERREUR(81)
  2523. ENDIF
  2524. C
  2525. SEGDES XMATRI
  2526. SEGSUP WRK1,WRK2,WRK4,MVELCH
  2527. GOTO 510
  2528. C_______________________________________________________________________
  2529. C
  2530. C SECTEUR DE CALCUL POUR LES ELEMENTS HOMOGENEISE TRIH
  2531. C_______________________________________________________________________
  2532. C
  2533. 92 CONTINUE
  2534. NBNO=NBNN
  2535. NBBB=NBNN
  2536. LRN =NBNN
  2537. NSTN=3
  2538. SEGINI WRK1,WRK2 ,WRK5
  2539. I195=0
  2540. DO 3092 IB=1,NBELEM
  2541. C
  2542. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  2543. C
  2544. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  2545. CALL ZERO (REL,LRE,LRE)
  2546. *
  2547. MPTVAL=IVAMAT
  2548. DO 9092 IM=1,10
  2549. IF (IVAL(IM).NE.0) THEN
  2550. MELVAL=IVAL(IM)
  2551. IBMN=MIN(IB ,VELCHE(/2))
  2552. VALMAT(IM)=VELCHE(1,IBMN)
  2553. ELSE
  2554. VALMAT(IM)=0.D0
  2555.  
  2556. ENDIF
  2557. 9092 CONTINUE
  2558. C
  2559. C ON CHERCHE LES CARACTERISTIQUES DU MATERIAU POUR L ELEMENT IB
  2560. C
  2561. RHOF =VALMAT(4)
  2562. E =VALMAT(6)
  2563. C =VALMAT(7)
  2564. RHOREF=VALMAT(8)
  2565. CREF =VALMAT(9)
  2566. RLCAR =VALMAT(10)
  2567. C
  2568. C ON CHERCHE LES CARACTERISTIQUES GEOMETRIQUES POUR L ELEMENT IB
  2569. C
  2570. MPTVAL=IVACAR
  2571. IF(IFOUR.EQ.1.OR.IFOUR.EQ.0) THEN
  2572. MELVAL=IVAL(1)
  2573. IBMN=MIN(IB,VELCHE(/2))
  2574. SCEL =VELCHE(1,IBMN)
  2575. MELVAL=IVAL(2)
  2576. IBMN=MIN(IB,VELCHE(/2))
  2577. SFLU =VELCHE(1,IBMN)
  2578. MELVAL=IVAL(3)
  2579. IBMN=MIN(IB,VELCHE(/2))
  2580. EPS =VELCHE(1,IBMN)
  2581. MELVAL=IVAL(4)
  2582. IBMN=MIN(IB,VELCHE(/2))
  2583. XINERT=VELCHE(1,IBMN)
  2584. EI = E*XINERT/(EPS*EPS)
  2585. ELSE
  2586. MELVAL=IVAL(1)
  2587. IBMN=MIN(IB,VELCHE(/2))
  2588. SCEL =VELCHE(1,IBMN)
  2589. MELVAL=IVAL(2)
  2590. IBMN=MIN(IB,VELCHE(/2))
  2591. SFLU =VELCHE(1,IBMN)
  2592. MELVAL=IVAL(3)
  2593. IBMN=MIN(IB,VELCHE(/2))
  2594. EPS =VELCHE(1,IBMN)
  2595. C E REPRESENTE LA RIGIDITE MODALE DE LA POUTRE
  2596. EI = E /(EPS*EPS)
  2597. ENDIF
  2598. C
  2599. C CALCUL DES COEFFICIENTS DE NORMALISATION
  2600. C
  2601. COEFPR=(RHOREF*CREF*CREF)/RLCAR
  2602. VKL1 =(COEFPR*COEFPR*SFLU)/(RHOF*C*C*SCEL)
  2603. VKL2 = EI/SCEL
  2604. C
  2605. C BOUCLE SUR LES POINTS DE GAUSS
  2606. C
  2607. ISDJC=0
  2608. DO 4092 IGAU=1,NBPGAU
  2609. CALL TRIHR1(IGAU,MELE,MFR,NBNO,IFOUR,NIFOUR,XE,SHPTOT,
  2610. # SHPWRK,NST,ISDJC,XGENE,DJAC,IRRT)
  2611. IF(IRRT.NE.1) GOTO 5092
  2612. DJAC=DJAC*POIGAU(IGAU)
  2613. CALL TRIHR2(XGENE,DJAC,VKL1,VKL2,LRE,NST,NBNO,IFOUR,REL)
  2614. 4092 CONTINUE
  2615. IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB
  2616. * SEGINI XMATRI
  2617. * IMATTT(IB)=XMATRI
  2618. C
  2619. C REMPLISSAGE DE XMATRI
  2620. C
  2621. CALL REMPMT(REL,LRE,RE(1,1,IB))
  2622. * SEGDES XMATRI
  2623. 3092 CONTINUE
  2624. C
  2625. C IMPRESSION D UN EVENTUEL MESSAGE D ERREUR
  2626. C
  2627. 5092 CONTINUE
  2628. IF(IRRT.EQ.0) THEN
  2629. MOTERR(1:4)=NOMTP(MELE)
  2630. CALL ERREUR(420)
  2631. ELSE
  2632. IF(IRRT.EQ.2) THEN
  2633. INTERR(1)=IB
  2634. CALL ERREUR(405)
  2635. ENDIF
  2636. ENDIF
  2637. IF(I195.NE.0) INTERR(1)=I195
  2638. IF(I195.NE.0) CALL ERREUR(195)
  2639. SEGDES XMATRI
  2640. SEGSUP WRK1,WRK2,WRK5,MVELCH
  2641. GOTO 510
  2642. *_______________________________________________________________________
  2643. *
  2644. * ELEMENT TUYO
  2645. *_______________________________________________________________________
  2646. *
  2647. 96 CONTINUE
  2648. NBNO=IPORE
  2649. NBBB=NBNN
  2650. SEGINI WRK1,WRK2,WRK3,WRK6
  2651. C
  2652. C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS
  2653. C
  2654. DO 3096 IB=1,NBELEM
  2655. KERRE=0
  2656. C
  2657. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  2658. C
  2659. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  2660. CALL ZERO (REL,LRE,LRE)
  2661. *
  2662. XL=(XE(1,2)-XE(1,1))**2+(XE(2,2)-XE(2,1))**2+
  2663. . (XE(3,2)-XE(3,1))**2
  2664. XL=SQRT(XL)
  2665. IF(XL.EQ.0.D0) THEN
  2666. KERRE=1
  2667. GO TO 3096
  2668. ENDIF
  2669. C
  2670. C RANGEMENT DES CARACTERISTIQUES DANS WORK
  2671. C ON SUPPOSE QU'ELLES SONT CONSTANTES POUR L'ELEMENT
  2672. C VX VY VZ sont supposes etre a la fin
  2673. C
  2674. ** write(6,*) 'rigi4 en 2695'
  2675. MPTVAL=IVACAR
  2676. DO 6096 IC=1,NCARR
  2677. IF (IVAL(IC).NE.0) THEN
  2678. MELVAL=IVAL(IC)
  2679. IBMN=MIN(IB,VELCHE(/2))
  2680. WORK(IC)=VELCHE(1,IBMN)
  2681. ELSE
  2682. WORK(IC)=0.D0
  2683. ENDIF
  2684. 6096 CONTINUE
  2685. C
  2686. C TRAITEMENT DU VECTEUR
  2687. C
  2688. ** IF (IVAL(NCARR).NE.0) THEN
  2689. ** MELVAL=IVAL(NCARR)
  2690. ** IBMN=MIN(IB,IELCHE(/2))
  2691. ** IP=IELCHE(1,IBMN)
  2692. ** IREF=(IP-1)*(IDIM+1)
  2693. ** DO 6196 IC=1,IDIM
  2694. ** WORK(NCARR+IC-1)=XCOOR(IREF+IC)
  2695. *6196 CONTINUE
  2696. ** ELSE
  2697. ** DO 6296 IC=1,IDIM
  2698. ** WORK(NCARR+IC-1)=0.D0
  2699. *6296 CONTINUE
  2700. ** ENDIF
  2701. C
  2702. C CALCUL DU REPERE LOCAL
  2703. C
  2704. CALL TUYPAS(XE,XL,WORK,PSS,KERRE)
  2705. IF(KERRE.NE.0) THEN
  2706. INTERR(1)=IB
  2707. CALL ERREUR(5 )
  2708. RETURN
  2709. ENDIF
  2710. C
  2711. C BOUCLE SUR LES POINTS DE GAUSS
  2712. C
  2713. DO 4096 IGAU=1,NBPGAU
  2714. C
  2715. C TRAITEMENT DU MATERIAU
  2716. C IL PEUT VARIER D'UN POINT DE GAUSS A L'AUTRE
  2717. C
  2718. MPTVAL=IVAMAT
  2719. IF(IMAT.EQ.2) THEN
  2720. MELVAL=IVAL(1)
  2721. IGMN=MIN(IGAU,VELCHE(/1))
  2722. IBMN=MIN(IB ,IELCHE(/2))
  2723. MLREEL=IELCHE(IGMN,IBMN)
  2724. SEGACT MLREEL
  2725. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  2726. . CALL DOHOOO(PROG,LHOOK,DDHOOK)
  2727. SEGDES MLREEL
  2728. *
  2729. ELSE IF (IMAT.EQ.1) THEN
  2730. *
  2731. DO 9096 IM=1,NMATT
  2732. IF (IVAL(IM).NE.0) THEN
  2733. MELVAL=IVAL(IM)
  2734. IGMN=MIN(IGAU,VELCHE(/1))
  2735. IBMN=MIN(IB ,VELCHE(/2))
  2736. VALMAT(IM)=VELCHE(IGMN,IBMN)
  2737. ELSE
  2738. VALMAT(IM)=0.D0
  2739. ENDIF
  2740. 9096 CONTINUE
  2741. CALL DOHCOM(VALMAT,NMATT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  2742. EPAIST=WORK(1)
  2743. CALL HOOKMU(EPAIST,0.D0,LHOOK,DDHOOK,DDHOMU)
  2744. ENDIF
  2745. *
  2746. * CALCUL DE LA MATRICE B ET DU JACOBIEN
  2747. *
  2748. CALL BTUYO(IGAU,MINTE,WRK1,WRK2,WRK3,XL,DJAC,KERRE)
  2749. DJAC=DJAC*POIGAU(IGAU)
  2750. *
  2751. IF(KERRE.NE.0) THEN
  2752. INTERR(1)=IB
  2753. CALL ERREUR(5)
  2754. ENDIF
  2755. *
  2756. * CALCUL ET INTEGRATION DE BTDB
  2757. *
  2758. CALL BDBST(BGENE,DJAC,DDHOMU,LRE,NSTRS,REL)
  2759. 4096 CONTINUE
  2760. *
  2761. * CHANGEMENT DE BASE
  2762. *
  2763. CALL TUYROT(REL,LRE,PSS,1)
  2764. *
  2765. * SEGINI XMATRI
  2766. * IMATTT(IB)=XMATRI
  2767. C
  2768. C REMPLISSAGE DE XMATRI
  2769. C
  2770. CALL REMPMT(REL,LRE,RE(1,1,IB))
  2771. * SEGDES XMATRI
  2772. 3096 CONTINUE
  2773. IF(KERRE.EQ.1) CALL ERREUR(128)
  2774. IF(KERRE.EQ.2) CALL ERREUR(138)
  2775. IF(IRTD.EQ.0) THEN
  2776. MOTERR(1:8)=CMATE
  2777. MOTERR(9:16)=NOMFR(MFR/2+1)
  2778. INTERR(1)=IFOUR
  2779. CALL ERREUR(81)
  2780. return
  2781. ENDIF
  2782. SEGDES XMATRI
  2783. SEGSUP WRK1,WRK2,WRK3,WRK6,MVELCH
  2784. GOTO 510
  2785. C_______________________________________________________________________
  2786. C
  2787. C SECTEUR DE CALCUL POUR LES ELEMENTS HOMOGENEISES QUAH
  2788. C_______________________________________________________________________
  2789. C
  2790. 126 CONTINUE
  2791. C
  2792. NBNO=NBNN
  2793. NBBB=NBNN
  2794. LRN =NBNN+NBNN
  2795. NSTN=2
  2796. SEGINI WRK1,WRK2 ,WRK5
  2797. I195=0
  2798. DO 3126 IB=1,NBELEM
  2799. C
  2800. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  2801. C
  2802. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  2803. CALL ZERO (REL,LRE,LRE)
  2804. *
  2805. MPTVAL=IVAMAT
  2806. DO 9126 IM=1,10
  2807. IF (IVAL(IM).NE.0) THEN
  2808. MELVAL=IVAL(IM)
  2809. IBMN=MIN(IB ,VELCHE(/2))
  2810. VALMAT(IM)=VELCHE(1,IBMN)
  2811. ELSE
  2812. VALMAT(IM)=0.D0
  2813.  
  2814. ENDIF
  2815. 9126 CONTINUE
  2816. C
  2817. C ON CHERCHE LES CARACTERISTIQUES DU MATERIAU POUR L ELEMENT IB
  2818. C
  2819. RHOF =VALMAT(4)
  2820.  
  2821. E =VALMAT(6)
  2822.  
  2823. C =VALMAT(7)
  2824.  
  2825. RHOREF=VALMAT(8)
  2826.  
  2827. CREF =VALMAT(9)
  2828.  
  2829. RLCAR =VALMAT(10)
  2830.  
  2831. C
  2832. C ON CHERCHE LES CARACTERISTIQUES GEOMETRIQUES POUR L ELEMENT IB
  2833. C
  2834. MPTVAL=IVACAR
  2835. MELVAL=IVAL(1)
  2836. IBMN=MIN(IB,VELCHE(/2))
  2837. SCEL =VELCHE(1,IBMN)
  2838.  
  2839. MELVAL=IVAL(2)
  2840. IBMN=MIN(IB,VELCHE(/2))
  2841. SFLU =VELCHE(1,IBMN)
  2842.  
  2843. MELVAL=IVAL(3)
  2844. IBMN=MIN(IB,VELCHE(/2))
  2845. EPS =VELCHE(1,IBMN)
  2846.  
  2847. MELVAL=IVAL(5)
  2848. IBMN=MIN(IB,VELCHE(/2))
  2849. XINERT=VELCHE(1,IBMN)
  2850. EI = E*XINERT/(EPS*EPS)
  2851. C
  2852. C CALCUL DES COEFFICIENTS DE NORMALISATION
  2853. C
  2854. COEFPR=(RHOREF*CREF*CREF)/RLCAR
  2855. VKL1 =(COEFPR*COEFPR*SFLU)/(RHOF*C*C*SCEL)
  2856. VKL2 = EI/SCEL
  2857. C
  2858. C
  2859. C BOUCLE SUR LES POINTS DE GAUSS
  2860. C
  2861. ISDJC=0
  2862. DO 4126 IGAU=1,NBPGAU
  2863. CALL QUAHR1(IGAU,MELE,MFR,NBNO,IFOUR,NIFOUR,XE,SHPTOT,
  2864. # SHPWRK,NST,ISDJC,XGENE,DJAC,IRRT)
  2865. IF(IRRT.NE.1) GOTO 5126
  2866. DJAC=DJAC*POIGAU(IGAU)
  2867. CALL QUAHR2(XGENE,DJAC,VKL1,VKL2,LRE,NST,NBNO,IFOUR,REL)
  2868. 4126 CONTINUE
  2869. IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB
  2870. * SEGINI XMATRI
  2871. * IMATTT(IB)=XMATRI
  2872. C
  2873. C REMPLISSAGE DE XMATRI
  2874. C
  2875. CALL REMPMT(REL,LRE,RE(1,1,IB))
  2876. * SEGDES XMATRI
  2877. 3126 CONTINUE
  2878. C
  2879. C IMPRESSION D UN EVENTUEL MESSAGE D ERREUR
  2880. C
  2881. 5126 CONTINUE
  2882. IF(IRRT.EQ.0) THEN
  2883. MOTERR(1:4)=NOMTP(MELE)
  2884. CALL ERREUR(420)
  2885. ELSE
  2886. IF(IRRT.EQ.2) THEN
  2887. INTERR(1)=IB
  2888. CALL ERREUR(405)
  2889. ENDIF
  2890. ENDIF
  2891. IF(I195.NE.0) INTERR(1)=I195
  2892. IF(I195.NE.0) CALL ERREUR(195)
  2893. SEGDES XMATRI
  2894. SEGSUP WRK1,WRK2,WRK5,MVELCH
  2895. GOTO 510
  2896. C_______________________________________________________________________
  2897. C
  2898. C SECTEUR DE CALCUL POUR LES ELEMENTS HOMOGENEISES CUBH
  2899. C_______________________________________________________________________
  2900. C
  2901. 127 CONTINUE
  2902. NBNO=NBNN
  2903. NBBB=NBNN
  2904. LRN =NBNN*2
  2905. NSTN=2
  2906. C
  2907. SEGINI WRK1,WRK2 ,WRK5
  2908. I195=0
  2909. DO 3127 IB=1,NBELEM
  2910. C
  2911. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  2912. C
  2913. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  2914. CALL ZERO (REL,LRE,LRE)
  2915. *
  2916. MPTVAL=IVAMAT
  2917. DO 9127 IM=1,10
  2918. IF (IVAL(IM).NE.0) THEN
  2919. MELVAL=IVAL(IM)
  2920. IBMN=MIN(IB ,VELCHE(/2))
  2921. VALMAT(IM)=VELCHE(1,IBMN)
  2922. ELSE
  2923. VALMAT(IM)=0.D0
  2924.  
  2925. ENDIF
  2926. 9127 CONTINUE
  2927. C
  2928. C ON CHERCHE LES CARACTERISTIQUES DU MATERIAU POUR L ELEMENT IB
  2929. C
  2930. RHOF =VALMAT(4)
  2931.  
  2932. E =VALMAT(6)
  2933.  
  2934. C =VALMAT(7)
  2935.  
  2936. RHOREF=VALMAT(8)
  2937.  
  2938. CREF =VALMAT(9)
  2939.  
  2940. RLCAR =VALMAT(10)
  2941. C
  2942. C ON CHERCHE LES CARACTERISTIQUES GEOMETRIQUES POUR L ELEMENT IB
  2943. C
  2944. MPTVAL=IVACAR
  2945. MELVAL=IVAL(1)
  2946. IBMN=MIN(IB,VELCHE(/2))
  2947. SCEL =VELCHE(1,IBMN)
  2948.  
  2949. MELVAL=IVAL(2)
  2950. IBMN=MIN(IB,VELCHE(/2))
  2951. SFLU =VELCHE(1,IBMN)
  2952.  
  2953. MELVAL=IVAL(3)
  2954. IBMN=MIN(IB,VELCHE(/2))
  2955. EPS =VELCHE(1,IBMN)
  2956.  
  2957. MELVAL=IVAL(5)
  2958. IBMN=MIN(IB,VELCHE(/2))
  2959. XINERT=VELCHE(1,IBMN)
  2960. EI = E*XINERT/(EPS*EPS)
  2961. C
  2962. C CALCUL DES COEFFICIENTS DE NORMALISATION
  2963. C
  2964. COEFPR=(RHOREF*CREF*CREF)/RLCAR
  2965. VKL1 =(COEFPR*COEFPR*SFLU)/(RHOF*C*C*SCEL)
  2966. VKL2 = EI/SCEL
  2967. C
  2968. C BOUCLE SUR LES POINTS DE GAUSS
  2969. C
  2970. ISDJC=0
  2971. DO 4127 IGAU=1,NBPGAU
  2972. CALL CUBHR1(IGAU,MELE,MFR,NBNO,NIFOUR,XE,SHPTOT,
  2973. # SHPWRK,NST,ISDJC,XGENE,DJAC,IRRT)
  2974. IF(IRRT.NE.1) GOTO 5127
  2975. DJAC=DJAC*POIGAU(IGAU)
  2976. C
  2977. C
  2978. CALL CUBHR2(XGENE,DJAC,VKL1,VKL2,LRE,NST,NBNO,IFOUR,REL)
  2979. 4127 CONTINUE
  2980. IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB
  2981. * SEGINI XMATRI
  2982. * IMATTT(IB)=XMATRI
  2983. C
  2984. C REMPLISSAGE DE XMATRI
  2985. C
  2986. CALL REMPMT(REL,LRE,RE(1,1,IB))
  2987. * SEGDES XMATRI
  2988. 3127 CONTINUE
  2989. C
  2990. C IMPRESSION D UN EVENTUEL MESSAGE D ERREUR
  2991. C
  2992. 5127 CONTINUE
  2993. IF(IRRT.EQ.0) THEN
  2994. MOTERR(1:4)=NOMTP(MELE)
  2995. CALL ERREUR(420)
  2996. ELSE
  2997. IF(IRRT.EQ.2) THEN
  2998. INTERR(1)=IB
  2999. CALL ERREUR(405)
  3000. ENDIF
  3001. ENDIF
  3002. IF(I195.NE.0) INTERR(1)=I195
  3003. IF(I195.NE.0) CALL ERREUR(195)
  3004. SEGDES XMATRI
  3005. SEGSUP WRK1,WRK2,WRK5,MVELCH
  3006. GOTO 510
  3007.  
  3008. C_______________________________________________________________________
  3009. C
  3010. C ELEMENTS CIFL MACRO ELEMENT CISAILLEMENT FLEXION
  3011. C
  3012. C_______________________________________________________________________
  3013. C
  3014. 258 CONTINUE
  3015. NBNO=NBNN
  3016. NBBB=NBNN
  3017. SEGINI WRK1,WRK2,WRK3,WRK4
  3018. C
  3019. C BOUCLE POUR TOUS LES ELEMENTS
  3020. C
  3021. DO IB=1,NBELEM
  3022. C
  3023. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  3024. C
  3025. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  3026. C
  3027. CALL ZERO (REL,LRE,LRE)
  3028. C
  3029. C PASSAGE DES AXES GLOBAUX AUX AXES LOCAUX
  3030. C
  3031. CALL MURLOC(XE,NBNN,LHOOK,LRE,BPSS,XH,BGENE)
  3032. C
  3033. C CALCUL DE LA MATRICE DE HOOK
  3034. C
  3035. MPTVAL=IVAMAT
  3036. IF(IMAT.EQ.2) THEN
  3037. MELVAL=IVAL(1)
  3038. IGMN=MIN(1,IELCHE(/1))
  3039. MLREEL=IELCHE(IGMN,IBMN)
  3040. SEGACT MLREEL
  3041. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  3042. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  3043. SEGDES MLREEL
  3044. ELSE IF (IMAT.EQ.1) THEN
  3045. DO IM=1,NMATT
  3046. IF (IVAL(IM).NE.0) THEN
  3047. MELVAL=IVAL(IM)
  3048. IBMN=MIN(IB ,VELCHE(/2))
  3049. VALMAT(IM)=VELCHE(1,IBMN)
  3050. ELSE
  3051. VALMAT(IM)=0.D0
  3052. ENDIF
  3053. ENDDO
  3054. C
  3055. MPTVAL=IVACAR
  3056. DO IC=1,NCARR
  3057. IF (IVAL(IC).NE.0) THEN
  3058. MELVAL=IVAL(IC)
  3059. IBMN=MIN(IB,VELCHE(/2))
  3060. WORK(IC)=VELCHE(1,IBMN)
  3061. ELSE
  3062. WORK(IC)=0.D0
  3063. ENDIF
  3064. ENDDO
  3065. C
  3066. CALL DOHMUR(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD)
  3067. ENDIF
  3068. C
  3069. C CALCUL ET INTEGRATION DE BDB
  3070. C
  3071. DDHOOK(1,1)=DDHOOK(1,1)/(XH/2)
  3072. DDHOOK(2,2)=DDHOOK(2,2)/(XH/2)
  3073. DDHOOK(3,3)=DDHOOK(3,3)/ XH
  3074. DDHOOK(4,4)=DDHOOK(4,4)/(XH/2)
  3075. DDHOOK(5,5)=DDHOOK(5,5)/(XH/2)
  3076. CALL BDBST(BGENE,1.D0,DDHOOK,LRE,NSTRS,REL)
  3077. C
  3078. * SEGINI XMATRI
  3079. * IMATTT(IB)=XMATRI
  3080. C
  3081. C REMPLISSAGE DE XMATRI
  3082. C
  3083. CALL REMPMT(REL,LRE,RE(1,1,IB))
  3084. * SEGDES XMATRI
  3085. ENDDO
  3086. C
  3087. SEGDES XMATRI
  3088. SEGSUP WRK1,WRK2,WRK3,WRK4,MVELCH
  3089. GOTO 510
  3090. C_______________________________________________________________________
  3091. C
  3092. C ELEMENT DE COQUE VOLUMIQUE SHB8
  3093. C_______________________________________________________________________
  3094. C
  3095. 260 CONTINUE
  3096. NBNO=NBNN
  3097. NBBB=NBNN
  3098. SEGINI WRK1,WRK2,WRK4,WRK7,MVELCH
  3099. C
  3100. C BOUCLE POUR TOUS LES ELEMENTS
  3101. C
  3102. DO IB=1,NBELEM
  3103. C
  3104. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  3105. C
  3106. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  3107. C
  3108. CALL ZERO (REL,LRE,LRE)
  3109.  
  3110. MPTVAL=IVAMAT
  3111. DO 9070 IM=1,NMATT
  3112. IF (IVAL(IM).NE.0) THEN
  3113. MELVAL=IVAL(IM)
  3114. IBMN=MIN(IB ,VELCHE(/2))
  3115. VALMAT(IM)=VELCHE(1,IBMN)
  3116. ELSE
  3117. VALMAT(IM)=XZERO
  3118. ENDIF
  3119. 9070 CONTINUE
  3120.  
  3121. PROPEL(1)=VALMAT(1)
  3122. PROPEL(2)=VALMAT(2)
  3123. DO IM=3,12
  3124. PROPEL(IM)=VALMAT(1)
  3125. ENDDO
  3126. PROPEL(13)=XZERO
  3127. PROPEL(14)=VALMAT(1)
  3128. WORK1(1)=IB
  3129.  
  3130. DO IM=1,5
  3131. REL(IM,1)=XZERO
  3132. ENDDO
  3133.  
  3134. cbp loi de comportement a utiliser =
  3135. c 1 : improved plane-stress constitutive law
  3136. c [Abed-Meiram & Combescure, IJNME, 2009]
  3137. c 2 : plane-stress constitutive law
  3138. c 3 : tridimensional constitutive law
  3139. cbp OUT(1)=3
  3140. OUT(1)=1
  3141. C
  3142. C CALCUL DE LA MATRICE DE RIGIDITE
  3143. C
  3144. call SHB8 (2,XE,DDHOOK,PROPEL,WORK1,REL,OUT)
  3145. C
  3146. * SEGINI XMATRI
  3147. * IMATTT(IB)=XMATRI
  3148. C
  3149. C REMPLISSAGE DE XMATRI
  3150. C
  3151. CALL REMPMT(REL,LRE,RE(1,1,IB))
  3152. * SEGDES XMATRI
  3153. ENDDO
  3154. SEGDES XMATRI
  3155. SEGSUP WRK1,WRK2,WRK4,WRK7,MVELCH
  3156. GOTO 510
  3157. *
  3158. C_______________________________________________________________________
  3159. C
  3160. C ELEMENTS DE ZONE COHESIVE ZCO2, ZCO3, ZCO4
  3161. C_______________________________________________________________________
  3162. C
  3163. 266 CONTINUE
  3164.  
  3165. NDIM = 2
  3166. IF(IFOUR.GT.0) NDIM = 3
  3167. NBNO=NBNN
  3168. NBBB=NBNN
  3169. SEGINI WRK1,WRK2,WRK4
  3170. C
  3171. DO 3266 IB=1,NBELEM
  3172. C
  3173. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  3174. C
  3175. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  3176. C
  3177. CALL ZERO (REL,LRE,LRE)
  3178. C
  3179. C BOUCLE SUR LES POINTS DE GAUSS
  3180. C
  3181. DO 6266 IGAU=1,NBPGAU
  3182. C
  3183. CALL ZCOLOC(XE,SHPTOT,NBNN,MELE,IFOUR,IGAU,BPSS)
  3184. C
  3185. CALL BZCO(IGAU,MFR,IFOUR,NIFOUR,XE,BPSS,SHPTOT,
  3186. . NSTRS,NBNN,LRE,MELE,SHPWRK,BGENE,DJAC,IERT)
  3187. IF (IERT.NE.0) THEN
  3188. INTERR(1)=IB
  3189. CALL ERREUR(612)
  3190. GOTO 99266
  3191. ENDIF
  3192. C
  3193. DJAC=DJAC*POIGAU(IGAU)
  3194. C
  3195. C CALCUL DE LA MATRICE DE HOOKE
  3196. C
  3197.  
  3198. MPTVAL=IVAMAT
  3199. IF(IMAT.EQ.2) THEN
  3200. MELVAL=IVAL(1)
  3201. IBMN=MIN(IB ,IELCHE(/2))
  3202. MLREEL=IELCHE(1,IBMN)
  3203. SEGACT MLREEL
  3204. IF (IB.LE.NELMAT.OR.NBGMAT.GT.1)
  3205. 1 CALL DOHOOO(PROG,LHOOK,DDHOOK)
  3206. SEGDES MLREEL
  3207. ELSE IF (IMAT.EQ.1) THEN
  3208. DO 9266 IM=1,NMATT
  3209. IF (IVAL(IM).NE.0) THEN
  3210. MELVAL=IVAL(IM)
  3211. IBMN=MIN(IB ,VELCHE(/2))
  3212. IGMN=MIN(IGAU,VELCHE(/1))
  3213. VALMAT(IM)=VELCHE(IGMN,IBMN)
  3214. ELSE
  3215. VALMAT(IM)=0.D0
  3216. ENDIF
  3217. 9266 CONTINUE
  3218. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  3219. 1 CALL DOU266(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  3220. ENDIF
  3221. C
  3222. C CALCUL ET INTEGRATION DE BDB
  3223. C
  3224. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  3225. 6266 CONTINUE
  3226. C
  3227. C REMPLISSAGE DE XMATRI
  3228. C
  3229. CALL REMPMT(REL,LRE,RE(1,1,IB))
  3230.  
  3231. 3266 CONTINUE
  3232. C
  3233. C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR
  3234. C
  3235. IF (IRTD.EQ.0) THEN
  3236. MOTERR(1:8) = CMATE
  3237. MOTERR(9:16) = NOMFR(MFR/2+1)
  3238. INTERR(1) = IFOUR
  3239. CALL ERREUR(81)
  3240. ENDIF
  3241. C
  3242. 99266 CONTINUE
  3243. SEGSUP WRK1,WRK2,WRK4,MVELCH
  3244. GOTO 510
  3245. *_______________________________________________________________________
  3246. *
  3247. 99 CONTINUE
  3248. MOTERR(1:4)=NOMTP(MELE)
  3249. MOTERR(9:12)='RIGI4'
  3250. CALL ERREUR(86)
  3251.  
  3252. 510 CONTINUE
  3253. SEGDES XMATRI
  3254. IF (CMATE.eq.'STATIQUE') THEN
  3255. mlmots = iinc
  3256. if (iinc.gt.0) segsup mlmots
  3257. mlmots = idua
  3258. if (idua.gt.0) segsup mlmots
  3259. ENDIF
  3260.  
  3261. c RETURN
  3262. END
  3263.  
  3264.  
  3265.  

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