Télécharger rigi4.eso

Retour à la liste

Numérotation des lignes :

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

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