Télécharger rigi4.eso

Retour à la liste

Numérotation des lignes :

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

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