Télécharger rigi2.eso

Retour à la liste

Numérotation des lignes :

rigi2
  1. C RIGI2 SOURCE OF166741 25/02/21 21:18:17 12166
  2. SUBROUTINE RIGI2(MATE,MELE,IPMAIL,IPMINT,NBPGAU,LRE,NSTRS,
  3. & IVAMAT,IVACAR,CMATE,MFR,NBGMAT,NELMAT,IMAT,LHOOK,NMATT,
  4. & IPORE,NDDL,IPMATR,IIPDPG,NCAR1,MELPHA,NOER)
  5. *---------------------------------------------------------------------*
  6. * __________________________ *
  7. * | | *
  8. * | CALCUL DE LA RIGIDITE | *
  9. * |________________________| *
  10. * *
  11. * massif, liquide, 'surface libre', poreux et joints poreux, *
  12. * incompressible *
  13. * *
  14. *---------------------------------------------------------------------*
  15. * *
  16. * ENTREES : *
  17. * ________ *
  18. * *
  19. * MATE Numero du materiau *
  20. * MELE Numero de l'element fini *
  21. * IPMAIL Pointeur sur un segment MELEME *
  22. * IPMINT Pointeur sur un segment MINTE *
  23. * NBPGAU Nombre de point d'integration pour la rigidite *
  24. * LRE Nombre de ddl dans la matrice de rigidite *
  25. * NSTRS Nombre de composante de contraintes/deformations *
  26. * IVAMAT Pointeur sur un segment MPTVAL pour le materiau ou *
  27. * pour une matrice de hooke *
  28. * IVACAR Pointeur sur un segment MPTVAL de caractéristiques *
  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 composante de materiau (IMAT=1) *
  35. * LHOOK Dimension de la matrice de Hooke *
  36. * IPORE Nombre de fonctions de forme *
  37. * NDDL Nombre de degre de liberte *
  38. * *
  39. * SORTIES : *
  40. * ________ *
  41. * *
  42. * IPMATR pointeur sur la rigidite de la sous-zone *
  43. * *
  44. *---------------------------------------------------------------------*
  45. IMPLICIT INTEGER(I-N)
  46. IMPLICIT REAL*8(A-H,O-Z)
  47.  
  48. -INC PPARAM
  49. -INC CCOPTIO
  50. -INC CCHAMP
  51. -INC CCREEL
  52.  
  53. -INC SMCHAML
  54. -INC SMINTE
  55. -INC SMELEME
  56. -INC SMRIGID
  57. -INC SMCOORD
  58. -INC SMLREEL
  59.  
  60. -INC TMPTVAL
  61.  
  62. SEGMENT WRK1
  63. REAL*8 DDHOOK(LHOOK,LHOOK) ,DDHOMU(LHOOK,LHOOK)
  64. REAL*8 REL(LRE,LRE) ,RINT(LRE,LRE) , XE(3,NBBB)
  65. ENDSEGMENT
  66. *
  67. SEGMENT WRK2
  68. REAL*8 SHPWRK(6,NBNO) ,BGENE(LHOOK,LRE)
  69. ENDSEGMENT
  70. *
  71. SEGMENT WRK3
  72. REAL*8 BPSS(3,3),XEL(3,NBBB)
  73. REAL*8 XNTH(LPP,LPP),XNTB(LPP,LPP),XNTT(LPP)
  74. ENDSEGMENT
  75. *
  76. SEGMENT WRK5
  77. REAL*8 XGENE(NSTN,LRN)
  78. ENDSEGMENT
  79. *
  80. SEGMENT WRK55
  81. REAL*8 YGENE(NCOT,NBNN),COBMA(LHOOK)
  82. ENDSEGMENT
  83. *
  84. SEGMENT WRK555
  85. REAL*8 XREL(LRN,LRN),COBB(NSTN),CPBB(NSTN),KKBB(NSTN,NSTN)
  86. ENDSEGMENT
  87. *
  88. SEGMENT WRK8
  89. REAL*8 XLOC(3,3),XGLOB(3,3),TXR(IDIM,IDIM)
  90. REAL*8 D1HO(LHOOK,LHOOK),ROTH(LHOOK,LHOOK)
  91. ENDSEGMENT
  92. *
  93. SEGMENT,MVELCH
  94. REAL*8 VALMAT(NV1)
  95. ENDSEGMENT
  96. *
  97. segment mwrk67
  98. real*8 valcar(nca1), xatef1(3,3)
  99. endsegment
  100.  
  101. DIMENSION A(4,60),BB(3,60),PP(4,4)
  102. CHARACTER*8 CMATE,celem
  103. logical drend,BDPGE
  104. *
  105. * WRITE (*,*) 'Entrée dans RIGI2.'
  106. MELEME=IPMAIL
  107. NBNN=NUM(/1)
  108. NBELEM=NUM(/2)
  109. *
  110. NV1=NMATT
  111. SEGINI,MVELCH
  112. *
  113. XMATRI=IPMATR
  114. c* NLIGRD=LRE
  115. c* NLIGRP=LRE
  116.  
  117. C Introduction du point autour duquel se fait le mouvement
  118. C de la section en defo plane generalisee
  119. C IIPDPG = numero du noeud/point support si defini pour le modele
  120. IF (IIPDPG.GT.0) THEN
  121. IF (IFOUR.EQ.-3) THEN
  122. BDPGE=.TRUE.
  123. IREF=(IIPDPG-1)*(IDIM+1)
  124. XDPGE=XCOOR(IREF+1)
  125. YDPGE=XCOOR(IREF+2)
  126. ELSE IF (IFOUR.EQ. 7 .OR. IFOUR.EQ. 8 .OR. IFOUR.EQ. 9 .OR.
  127. & IFOUR.EQ.10 .OR. IFOUR.EQ.11 .OR. IFOUR.EQ.14) THEN
  128. BDPGE=.TRUE.
  129. XDPGE=XZero
  130. YDPGE=XZero
  131. else
  132. write(ioimp,*) 'RIGI2 : ERREUR DPGE'
  133. call erreur(5)
  134. return
  135. ENDIF
  136. ELSE
  137. BDPGE=.FALSE.
  138. XDPGE=XZero
  139. YDPGE=XZero
  140. ENDIF
  141. *
  142. NHRM=NIFOUR
  143. *
  144. MINTE=IPMINT
  145. IRTD=1
  146. IDECAP=0
  147. C_______________________________________________________________________
  148. C
  149. C NUMERO DES ETIQUETTES :
  150. C ETIQUETTES DE 1 A 98 POUR TRAITEMENT SPECIFIQUE A L ELEMENT
  151. C DANS LA ZONE SPECIFIQUE A CHAQUE ELEMENT COMMENCANT PAR :
  152. C 5 CONTINUE
  153. C ELEMENT 5 ETIQUETTES 1005 2005 3005 4005 ...
  154. C 44 CONTINUE
  155. C ELEMENT 44 ETIQUETTES 1044 2044 3044 4044 ...
  156. C_______________________________________________________________________
  157. C
  158. IF(MELE.GE.1.AND.MELE.LE.100) THEN
  159. C CABL SEG2 SEG3 TRI3 TRI4 TRI6 TRI7 QUA4 QUA5 QUA8
  160. GOTO ( 99, 99, 99, 4, 99, 4, 99, 4, 99, 4
  161. C QUA9 RAC2 RAC3 CUB8 CU20 PRI6 PR15 LIA3 LIA4 LIA6
  162. 1 , 99, 99, 99, 4, 4, 4, 4, 99, 99, 99
  163. C LIA8 MULT TET4 TE10 PYR5 PY13 COQ3 DKT POUT LISP
  164. 2 , 99, 99, 4, 4, 4, 4, 99, 99, 99, 99
  165. C FAC3 FAC4 FAC6 FAC8 LTR3 LQU4 LCU8 LPR6 LTE4 LPY5
  166. 3 , 99, 99, 99, 99, 35, 35, 35, 35, 35, 35
  167. C COQ8 TUYA TUFI COQ2 POI1 BARR RACO LSU2 COQ4 LISM
  168. 4 , 99, 99, 99, 99, 99, 99, 99, 48, 99, 99
  169. C COF3 RES2 LSU3 LSU4 LICO COQ6 CVS2 CVS3 CVT3 CVT6
  170. 5 , 99, 99, 48, 48, 99, 99, 99, 99, 99, 99
  171. C CVQ4 CVQ8 THP5 TH13 THP6 TH15 THC8 TH20 ICT3 ICQ4
  172. 6 , 99, 99, 99, 99, 99, 99, 99, 99, 4, 4
  173. C ICT6 ICQ8 ICC8 ICT4 ICP6 IC20 IC10 IC15 TRIP QUAP
  174. 7 , 4, 4, 4, 4, 4, 4, 4, 4, 79, 79
  175. C CUBP TETP PRIP TIMO JOI2 JOI3 JOT3 JOI4 JOI6 JOI8
  176. 8 , 79, 79, 79, 99, 99, 99, 99, 99, 99, 99
  177. C LISC TRIH DST LIC4 CERC TUYO LSE2 LITU HYT3 HYQ4
  178. 9 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99)
  179. c cccccc
  180. . ,MELE
  181. ELSEIF(MELE.GE.101.AND.MELE.LE.200) THEN
  182. C HYT4 HYP6 HYC8 TRIS QUAS POIS FOR3 JOP3 JOP6 JOP8
  183. GOTO ( 99, 99, 99, 99, 99, 99, 99, 80, 80, 80
  184. C POL3 POL4 POL5 POL6 POL7 POL8 POL9 PO10 PO11 PO12
  185. 1 , 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
  186. C PO13 PO14 BAR3 BAEX LIA2 QUAH CUBH ROT3 SEF2 TRF3
  187. 2 , 4, 4, 99, 99, 99, 99, 99, 99, 99, 99
  188. C QUF4 CUF8 PRF6 TEF4 PYF5 MSE3 MTR6 MQU9 MC27 MP18
  189. 3 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  190. C MT10 MP14 SEF3 TRF7 QUF9 CF27 PF21 TF15 PF19 SEG6
  191. 4 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  192. C TR21 QU36 C216 P126 TE56 PY91 TRH6 BSE2 BTR4 BQU5
  193. 5 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  194. C BCU9 BPR7 BTE5 BPY6 FRO4 SEGS POJS JCT3 JCI4 JGI2
  195. 6 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  196. C JGT3 JGI4 TRIQ QUAQ CUBQ TETQ PRIQ TRIR QUAR CUBR
  197. 7 , 99, 99, 173, 173, 173, 173, 173, 173, 173, 173
  198. C TETR PRIR Q4RI Q8RI JOQ3 JOQ6 JOQ8 JOR3 JOR6 JOR8
  199. 8 , 173, 173, 4, 4, 185, 185, 185, 185, 185, 185
  200. C T1D2 T1D3 M1D2 M1D3 LC03 LC07 LC09 LC27 LC21 LC15
  201. 9 , 99, 99, 4, 4, 99, 99, 99, 99, 99, 99)
  202. c cccccc
  203. . ,MELE-100
  204. ELSEIF(MELE.GE.201.AND.MELE.LE.300) THEN
  205. C LC19 LS03 LS07 LS09 LS27 LS21 LS15 LS19 BS03 BS07
  206. GOTO ( 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  207. C BS09 BS27 BS21 BS15 BS19 MC03 MC07 MC09 MC27 MC21
  208. 1 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  209. C MC15 MC19 M103 M107 M109 M127 M121 M115 M119 MS03
  210. 2 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  211. C MS07 MS09 MS27 MS21 MS15 MS19 QC03 QC07 QC09 QC27
  212. 3 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  213. C QC21 QC15 QC19 Q103 Q107 Q109 Q127 Q121 Q115 Q119
  214. 4 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  215. C QS03 QS07 QS09 QS27 QS21 QS15 QS19 CIFL SURE SHB8
  216. 5 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  217. C CAF2 CAF3 XQ4R XC8R JOI1 ZCO2 ZCO3 ZCO4 TUY2 TUY3
  218. 6 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  219. C COS2 COA2 ICY5 IC13 CU27 PR21 TE15 PY19 C20R P15R
  220. 7 , 99, 99, 4, 4, 4, 4, 4, 4, 4, 4)
  221. c cccccc
  222. . ,MELE-200
  223. ENDIF
  224. GOTO 99
  225. C_______________________________________________________________________
  226. C
  227. C SECTEUR DE CALCUL POUR LES ELEMENTS MASSIFS ET INCOMPRESSIBLES
  228. C_______________________________________________________________________
  229. C
  230. 4 CONTINUE
  231. DIM3=1.D0
  232. *
  233. * CAS ORTHOTROPE ( 2) ANISOTROPE ( 3) UNIDIRICTIONNEL (4)
  234. *
  235. * RECUPERATION DES FONCTIONS DE FORME ET LEURS DERIVEES AU CENTRE DE
  236. * L'ELEMENT POUR LE CALCUL DES AXES LOCAUX
  237. IPMIN2 = 0
  238. IF ( (MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) .AND. IMAT.EQ.1) THEN
  239. NLG=NUMGEO(MELE)
  240. CALL RESHPT(1,NBNN,NLG,MELE,0,IPMIN2,IRT1)
  241. MINTE2=IPMIN2
  242. SEGACT MINTE2
  243. SEGINI WRK8
  244. ENDIF
  245.  
  246. NBNO=NBNN
  247. NBBB=NBNN
  248. SEGINI WRK1,WRK2
  249.  
  250. if (melpha.gt.0) melva1 = melpha
  251.  
  252. * Initialisation en cas de matrice d'efficacite
  253. MWRK67 = 0
  254. celem = ' '
  255. IF (IVACAR.GT.0) THEN
  256. MPTVAL=IVACAR
  257. * SEGACT,MPTVAL
  258. IF (IVAL(NCAR1).GT.0 .OR. IVAL(NCAR1+1).GT.0) THEN
  259. nca1 = IVAL(/1)
  260. SEGINI,MWRK67
  261. celem = 'MASSIF '
  262. nstep = 2
  263. if (ifour.eq.2) nstep = 3
  264. drend = .false.
  265. irend = 0
  266. if (ival(ncar1).gt.0.and.tyval(ncar1).eq.'REAL*8') then
  267. drend = .true.
  268. irend = 1
  269. endif
  270. if (ival(ncar1).eq.0.and.tyval(ncar1+1).eq.'REAL*8') then
  271. drend = .false.
  272. irend = 2
  273. endif
  274. ENDIF
  275. ENDIF
  276.  
  277. DO 3004 IB=1,NBELEM
  278. C
  279. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  280. C
  281. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  282. C
  283. C CALCUL DES AXES LOCAUX DANS LE CAS DES MATERIAUX ORTHOTROPE ,
  284. C ANISOTROPE ET UNIDIRECTIONNEL
  285. C
  286. C* IF((MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4).AND.IMAT.EQ.1)THEN
  287. IF (IPMIN2.NE.0) THEN
  288. NBSH=MINTE2.SHPTOT(/2)
  289. CALL RLOCAL (XE,MINTE2.SHPTOT,NBSH,NBNN,TXR)
  290. if (nbsh.eq.-1) then
  291. call erreur(525)
  292. goto 9904
  293. endif
  294. ENDIF
  295. C
  296. CALL ZERO (RINT,LRE,LRE)
  297. C
  298. C= EF InCompressibles : CALCUL DES COEFF UTILES A LA MATRICE B-BARRE
  299. IF (MFR.EQ.31) THEN
  300. CALL BBCALC(MELE,NBNN,MFR,IDIM,XE,
  301. & NBPGAU,POIGAU,QSIGAU,ETAGAU,DZEGAU,
  302. & NSTRS,LRE,IFOUR,NHRM,A,BB,SHPTOT,SHPWRK,
  303. & BGENE,XDPGE,YDPGE,PP)
  304. ENDIF
  305. C segact,wrk1*mod
  306. C
  307. C BOUCLE SUR LES POINTS DE GAUSS
  308. C
  309. ISDJC=0
  310. DO 4004 IGAU=1,NBPGAU
  311. C
  312. C RECUPERATION DE L'EPAISSEUR
  313. C
  314. IF (IFOUR.EQ.-2)THEN
  315. MPTVAL=IVACAR
  316. IF (IVACAR.NE.0) THEN
  317. MELVAL=IVAL(1)
  318. IF (MELVAL.NE.0) THEN
  319. IGMN=MIN(IGAU,VELCHE(/1))
  320. IBMN=MIN(IB,VELCHE(/2))
  321. DIM3=VELCHE(IGMN,IBMN)
  322. ELSE
  323. DIM3=1.D0
  324. ENDIF
  325. ENDIF
  326. ENDIF
  327.  
  328. *
  329. CALL BMATST(IGAU,NBPGAU,POIGAU,QSIGAU,ETAGAU,DZEGAU,
  330. 1 MELE,MFR,NBNN,LRE,IFOUR,NSTRS,NHRM,DIM3,XE,
  331. 2 SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE)
  332.  
  333. IF (DJAC.EQ.0.D0) THEN
  334. INTERR(1)=IB
  335. CALL ERREUR(259)
  336. GOTO 9904
  337. ENDIF
  338. IF (DJAC.LT.0.D0) ISDJC=ISDJC+1
  339. DJAC=ABS(DJAC)*POIGAU(IGAU)
  340.  
  341. C En cas d'elements incompressibles : BGENE selon la methode B-BARRE
  342. IF (MFR.EQ.31) THEN
  343. CALL BBAR(IGAU,NBPGAU,POIGAU,QSIGAU,ETAGAU,DZEGAU,
  344. & MELE,NBNN,LRE,IFOUR,NSTRS,XE,DJAC,A,BB,BGENE)
  345. ENDIF
  346. C
  347. MPTVAL=IVAMAT
  348. IF(IMAT.EQ.2) THEN
  349. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN
  350. MELVAL=IVAL(1)
  351. IBMN=MIN(IB ,IELCHE(/2))
  352. IGMN=MIN(IGAU,IELCHE(/1))
  353. MLREEL=IELCHE(IGMN,IBMN)
  354. SEGACT,MLREEL
  355. CALL DOHOOO(PROG,LHOOK,DDHOOK)
  356. C SEGDES MLREEL
  357. ENDIF
  358. ELSE IF (IMAT.EQ.1) THEN
  359. DO 9004 IM=1,NMATT
  360. IF (IVAL(IM).NE.0) THEN
  361. MELVAL=IVAL(IM)
  362. IBMN=MIN(IB ,VELCHE(/2))
  363. IGMN=MIN(IGAU,VELCHE(/1))
  364. if (ibmn.gt.0.and.igmn.gt.0) then
  365. VALMAT(IM)=VELCHE(IGMN,IBMN)
  366. else
  367. VALMAT(IM)=0.D0
  368. endif
  369. ELSE
  370. VALMAT(IM)=0.D0
  371. ENDIF
  372. 9004 CONTINUE
  373. IF(MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4)THEN
  374. IF(IGAU.LE.NBGMAT)
  375. 1 CALL DOHMAO(VALMAT,CMATE,IFOUR,IDIM,TXR,XLOC,XGLOB,D1HO,
  376. 2 ROTH,DDHOOK,LHOOK,1,IRTD)
  377. ELSE
  378. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  379. 1 CALL DOHMAS(VALMAT,CMATE,IFOUR,LHOOK,1,DDHOOK,IRTD)
  380. ENDIF
  381. ENDIF
  382. C
  383. C CHOIX POUR BDB/DEFO PLANE GENE --- PRODUIT MATRICIEL NORMAL
  384. C /MASSIF ------------ PRODUIT PAR BLOC
  385. C
  386. * initialise
  387. CALL ZERO (REL,LRE,LRE)
  388. * calcul rigidite elementaire
  389. IF (BDPGE) THEN
  390. CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL)
  391. ELSE
  392. CALL BDBS1(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL,MFR,IFOUR,MATE,
  393. 1 IGAU,IMAT,0.D0)
  394. ENDIF
  395.  
  396. * matrice d'efficacite
  397. IF (MWRK67.GT.0) THEN
  398. MPTVAL=IVACAR
  399. DO 9008 IM= 1,IVAL(/1)
  400. IF (IVAL(IM).GT.0) THEN
  401. MELVAL=IVAL(IM)
  402. IF (TYVAL(IM).EQ.'REAL*8') THEN
  403. IBMN=MIN(IB ,VELCHE(/2))
  404. IGMN=MIN(IGAU,VELCHE(/1))
  405. VALCAR(IM)=VELCHE(IGMN,IBMN)
  406. ELSE
  407. IBMN=MIN(IB ,IELCHE(/2))
  408. IGMN=MIN(IGAU,IELCHE(/1))
  409. VALCAR(IM)=IELCHE(IGMN,IBMN)
  410. ENDIF
  411. ELSE
  412. VALCAR(IM)=0.D0
  413. ENDIF
  414. 9008 CONTINUE
  415. do i = 1,nstep
  416. do j = 1, nstep
  417. xatef1(i,j) = 0.d0
  418. enddo
  419. enddo
  420. if (irend.eq.1) then
  421. xatef1(1,1) = valcar(ncar1)
  422. xatef1(2,2) = valcar(ncar1)
  423. if (nstep.eq.3) xatef1(3,3) = valcar(ncar1)
  424. else if (irend.eq.2) then
  425. xatef1(1,1) = valcar(ncar1+7)
  426. xatef1(2,2) = valcar(ncar1+8)
  427. if (nstep.eq.3) xatef1(3,3) = valcar(ncar1+9)
  428. endif
  429. call effi2(valcar,tyval,nca1,ncar1,rel,lre,ib,igau,xatef1,
  430. & nstep,drend,celem)
  431. ENDIF
  432.  
  433. * ponderation par la phase
  434. IF (MELPHA.GT.0) THEN
  435. IBMN=MIN(IB ,melva1.VELCHE(/2))
  436. IGMN=MIN(IGAU,melva1.VELCHE(/1))
  437. coe1 = melva1.velche(igmn,ibmn)
  438. ELSE
  439. coe1 = 1.D0
  440. ENDIF
  441. * stocke
  442. do jj = 1,LRE
  443. do ii = 1,LRE
  444. rint(ii,jj) = rint(ii,jj) + rel(ii,jj)*coe1
  445. enddo
  446. enddo
  447. *
  448. 4004 CONTINUE
  449. *
  450. IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) THEN
  451. INTERR(1)=IB
  452. if (noer.eq.0) CALL ERREUR(195)
  453. noer=195
  454. GOTO 9904
  455. ENDIF
  456. C
  457. C REMPLISSAGE DE XMATRI
  458. C
  459. c CALL REMPMT(RINT,LRE,RE)
  460. DO IBK=1,LRE
  461. DO IAK=1,LRE
  462. RE(IAK,IBK,IB)=RINT(IAK,IBK)
  463. ENDDO
  464. ENDDO
  465. * do i = 1,8
  466. * write(6,*) re(13,3*i-2),re(13,3*i-1),re(13,3*i)
  467. * enddo
  468. *
  469. 3004 CONTINUE
  470. c
  471. IF(IRTD.EQ.0) THEN
  472. MOTERR(1:8)=CMATE
  473. MOTERR(9:16)=NOMFR(MFR/2+1)
  474. INTERR(1)=IFOUR
  475. CALL ERREUR(81)
  476. ENDIF
  477. 9904 CONTINUE
  478. C* IF ((MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) .AND.IMAT.EQ.1) THEN
  479. IF (IPMIN2.NE.0) THEN
  480. SEGDES MINTE2
  481. SEGSUP WRK8
  482. ENDIF
  483. SEGSUP WRK1,WRK2
  484. IF (MWRK67.NE.0) SEGSUP,MWRK67
  485. GOTO 510
  486. C_______________________________________________________________________
  487. C
  488. C SECTEUR DE CALCUL POUR LES ELEMENTS LIQUIDES
  489. C_______________________________________________________________________
  490. C
  491. 35 CONTINUE
  492. NBNO=NBNN
  493. NBBB=NBNN
  494. NSTRS=NDDL
  495. SEGINI WRK1,WRK2
  496. c
  497. DO 3035 IB=1,NBELEM
  498. C
  499. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  500. C
  501. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  502. CALL ZERO (REL,LRE,LRE)
  503. C
  504. C BOUCLE SUR LES POINTS DE GAUSS
  505. C
  506. ISDJC=0
  507. DO 4035 IGAU=1,NBPGAU
  508.  
  509. MPTVAL=IVAMAT
  510. DO IM=1,5
  511. IF (IVAL(IM).NE.0) THEN
  512. MELVAL=IVAL(IM)
  513. IGMN=MIN(IGAU,VELCHE(/1))
  514. IBMN=MIN(IB,VELCHE(/2))
  515. VALMAT(IM)=VELCHE(IGMN,IBMN)
  516. ELSE
  517. VALMAT(IM)=0.D0
  518. ENDIF
  519. ENDDO
  520. C
  521. C CALCUL DES COEFFICIENTS DE NORMALISATION
  522. C
  523. RHO =VALMAT(1)
  524. C =VALMAT(2)
  525. RHOREF=VALMAT(3)
  526. CREF =VALMAT(4)
  527. RLCAR =VALMAT(5)
  528. C
  529. COEFPR=(RHOREF*CREF*CREF)/RLCAR
  530. VKL =(COEFPR*COEFPR)/(RHO*C*C)
  531.  
  532. CALL NMATST(IGAU,MELE,MFR,NBNN,LRE,IFOUR,NIFOUR,NSTRS,1.D0,XE,
  533. 1 SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE)
  534. IF(DJAC.LT.0.D0) ISDJC=ISDJC+1
  535.  
  536. DJAC=ABS(DJAC)*POIGAU(IGAU)
  537. CALL NKLNST(BGENE,DJAC,VKL,LRE,NSTRS,REL)
  538. 4035 CONTINUE
  539. *
  540. IF (ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) THEN
  541. INTERR(1)=IB
  542. CALL ERREUR(195)
  543. noer=195
  544. GOTO 9935
  545. ENDIF
  546. C
  547. C REMPLISSAGE DE XMATRI
  548. C
  549. CALL REMPMT(REL,LRE,RE(1,1,IB))
  550. 3035 CONTINUE
  551. *
  552. 9935 CONTINUE
  553. SEGSUP WRK1,WRK2
  554. GOTO 510
  555. C_______________________________________________________________________
  556. C
  557. C SECTEUR DE CALCUL POUR LES ELEMENTS DE SURFACE LIBRE
  558. C_______________________________________________________________________
  559. C
  560. 48 CONTINUE
  561. NBNO=NBNN
  562. NBBB=NBNN
  563. NSTRS=NDDL
  564. SEGINI WRK1,WRK2
  565. c
  566. DO 3048 IB=1,NBELEM
  567. C
  568. C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  569. C
  570. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  571. CALL ZERO (REL,LRE,LRE)
  572. C
  573. MPTVAL=IVAMAT
  574. DO 9048 IM=1,6
  575. IF (IVAL(IM).NE.0) THEN
  576. MELVAL=IVAL(IM)
  577. IBMN=MIN(IB ,VELCHE(/2))
  578. VALMAT(IM)=VELCHE(1,IBMN)
  579. ELSE
  580. VALMAT(IM)=0.D0
  581. ENDIF
  582. 9048 CONTINUE
  583. C
  584. RHO =VALMAT(1)
  585. G =VALMAT(6)
  586. VKS =RHO*G
  587. C
  588. C BOUCLE SUR LES POINTS DE GAUSS
  589. C
  590. ISDJC=0
  591. DO 4048 IGAU=1,NBPGAU
  592. CALL NMATST(IGAU,MELE,MFR,NBNN,LRE,IFOUR,NIFOUR,NSTRS,1.D0,XE,
  593. 1 SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE)
  594. IF(DJAC.LT.0.0) ISDJC=ISDJC+1
  595.  
  596. DJAC=ABS(DJAC)*POIGAU(IGAU)
  597. CALL NKSNST(BGENE,DJAC,VKS,LRE,NSTRS,REL)
  598. 4048 CONTINUE
  599. IF (ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) THEN
  600. INTERR(1)=IB
  601. CALL ERREUR(195)
  602. noer=195
  603. GOTO 9948
  604. ENDIF
  605. C
  606. C REMPLISSAGE DE XMATRI
  607. C
  608. CALL REMPMT(REL,LRE,RE(1,1,ib))
  609. 3048 CONTINUE
  610. C
  611. 9948 CONTINUE
  612. SEGSUP WRK1,WRK2
  613. GOTO 510
  614. C_______________________________________________________________________
  615. C
  616. C MILIEUX POREUX
  617. C_______________________________________________________________________
  618. C
  619. 79 CONTINUE
  620. C
  621. C* Cas non pevus actuellement
  622. IF (IMAT.EQ.1) THEN
  623. IF (MATE.LT.1.OR.MATE.GT.4) GOTO 99
  624. ELSE
  625. GOTO 99
  626. ENDIF
  627. C
  628. C POUR CES ELEMENTS NBBB = NOMBRE DE NOEUDS
  629. C NBNO = NOMBRE DE FONCTIONS DE FORME
  630. C ON ENLEVE LA PRESSION POREUSE DES CONTRAINTES
  631. C
  632. DIM3=1.D0
  633. NCOT=0
  634. NBNO=IPORE
  635. NBBB=NBNN
  636. NSTN=1
  637. **************** AM 08/01/01
  638. ***** NSTMU=2
  639. ***** IF(IFOUR.GE.0) NSTMU=3
  640. NSTMU=3
  641. LRN = NBNO-NBBB
  642. LRB=LRE-NBNN
  643.  
  644. IELE=NUMGEO(MELE)
  645. IF(IELE.EQ.6 ) NCOT=3
  646. IF(IELE.EQ.10) NCOT=4
  647. IF(IELE.EQ.15) NCOT=12
  648. IF(IELE.EQ.17) NCOT=9
  649. IF(IELE.EQ.24) NCOT=6
  650. IF(NCOT.EQ.0) THEN
  651. CALL ERREUR(5)
  652. GOTO 510
  653. ENDIF
  654. *
  655. * CAS NON ISOTROPES
  656. * RECUPERATION DES FONCTIONS DE FORME ET LEURS DERIVEES
  657. * AU CENTRE DE L'ELEMENT POUR LE CALCUL DES AXES LOCAUX
  658. *
  659. IPMIN2 = 0
  660. IF ( (MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4).AND.IMAT.EQ.1 ) THEN
  661. CALL RESHPT(1,NBNO,IELE,MELE,0,IPMIN2,IRT1)
  662. MINTE2=IPMIN2
  663. SEGACT MINTE2
  664. SEGINI WRK8
  665. NSTMU=LHOOK
  666. ENDIF
  667. *
  668. SEGINI WRK1,WRK2,WRK5,WRK55
  669. *
  670. DO 3079 IB=1,NBELEM
  671. *
  672. * ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  673. *
  674. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  675. *
  676. * CALCUL DES AXES LOCAUX DANS LES CAS NON ISOTROPES
  677. *
  678. C* IF((MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4)
  679. C* . .AND.IMAT.EQ.1)THEN
  680. IF (IPMIN2.NE.0) THEN
  681. NBSH=MINTE2.SHPTOT(/2)
  682. CALL RLOCAL (XE,MINTE2.SHPTOT,NBSH,NBNN,TXR)
  683. if (nbsh.eq.-1) then
  684. call erreur(525)
  685. goto 9979
  686. endif
  687. ENDIF
  688. *
  689. CALL ZERO (REL,LRE,LRE)
  690. *
  691. * TRAITEMENT POUR NOEUDS MILIEUX PRESSION
  692. *
  693. FREF = 1.D6
  694. CALL BNPOR2(YGENE,NCOT,IELE)
  695. IF(IERR.NE.0) GOTO 9979
  696. *
  697. * DO 27895 IOI=1,NCOT
  698. * WRITE(6,28927) IOI
  699. *28927 FORMAT(2X,' MATRICE YGENE - LIGNE ',I3)
  700. * WRITE(6,28928) (YGENE(IOI,J),J=1,NBNN)
  701. *28928 FORMAT(8(1X,1PE10.3))
  702. *27895 CONTINUE
  703. C
  704. C BOUCLE SUR LES POINTS DE GAUSS
  705. C
  706. ISDJC=0
  707. DO 4079 IGAU=1,NBPGAU
  708. C
  709. C RECUPERATION DE L'EPAISSEUR
  710. C
  711. IF (IFOUR.EQ.-2)THEN
  712. MPTVAL=IVACAR
  713. IF (IVACAR.NE.0) THEN
  714. MELVAL=IVAL(1)
  715. IF (MELVAL.NE.0) THEN
  716. IGMN=MIN(IGAU,VELCHE(/1))
  717. IBMN=MIN(IB,VELCHE(/2))
  718. DIM3=VELCHE(IGMN,IBMN)
  719. ELSE
  720. DIM3=1.D0
  721. ENDIF
  722. ENDIF
  723. ENDIF
  724. C
  725.  
  726. c write(6,*) 'rigi2 WRK1,lhook,nstrs=',WRK1,lhook,nstrs
  727. CALL BNPORE(IGAU,NBNO,NBBB,LRE,IFOUR,LHOOK,NSTN,NHRM,
  728. . DIM3,XE,SHPTOT,SHPWRK,BGENE,XGENE,DJAC,1)
  729. IF (DJAC.EQ.0.D0) THEN
  730. INTERR(1)=IB
  731. CALL ERREUR(259)
  732. GOTO 9979
  733. ENDIF
  734. IF (DJAC.LT.0.D0) ISDJC=ISDJC+1
  735. DJAC=ABS(DJAC)*POIGAU(IGAU)
  736. C
  737. * IF(IGAU.EQ.1) THEN
  738. * DO 27892 IOI=1,LHOOK
  739. * WRITE(6,28920) IOI
  740. *28920 FORMAT(2X,' MATRICE BGENE - LIGNE ',I3)
  741. * WRITE(6,28921) (BGENE(IOI,J),J=1,LRE)
  742. *28921 FORMAT(8(1X,1PE10.3))
  743. *27892 CONTINUE
  744. * DO 27893 IOI=1,NSTN
  745. * WRITE(6,28922) IOI
  746. *28922 FORMAT(2X,' MATRICE XGENE - LIGNE ',I3)
  747. * WRITE(6,28923) (XGENE(IOI,J),J=1,LRN)
  748. *28923 FORMAT(8(1X,1PE10.3))
  749. *27893 CONTINUE
  750. * ENDIF
  751.  
  752. MPTVAL=IVAMAT
  753. C*D IF(IMAT.EQ.2) THEN
  754. C*D GO TO 99
  755. C*D ELSE IF (IMAT.EQ.1) THEN
  756. *
  757. DO 9079 IM=1,NMATT
  758. IF (IVAL(IM).NE.0) THEN
  759. MELVAL=IVAL(IM)
  760. IBMN=MIN(IB ,VELCHE(/2))
  761. IGMN=MIN(IGAU,VELCHE(/1))
  762. VALMAT(IM)=VELCHE(IGMN,IBMN)
  763. ELSE
  764. VALMAT(IM)=0.D0
  765. ENDIF
  766. 9079 CONTINUE
  767. *
  768. IF(MATE.EQ.1) THEN
  769. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  770. . CALL DOHMAS(VALMAT,CMATE,IFOUR,LHOOK,1,DDHOOK,IRTD)
  771. DO 4879 I=1,NSTMU
  772. COBMA(I) =VALMAT(3)
  773. 4879 CONTINUE
  774. XMOB =VALMAT(4)
  775. *
  776. ELSE IF(MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) THEN
  777. IF(IGAU.LE.NBGMAT)
  778. . CALL PORMAO(VALMAT,CMATE,IFOUR,IDIM,TXR,XLOC,XGLOB,D1HO,
  779. . ROTH,DDHOOK,LHOOK,COBMA,XMOB,1,IRTD)
  780. C*D ELSE
  781. C*D GO TO 99
  782. ENDIF
  783. *
  784. C*D ENDIF
  785. *
  786. CALL BDBS1(BGENE,DJAC,DDHOOK,LRE,LHOOK,REL,MFR,IFOUR,MATE,
  787. . IGAU,IMAT,0.D0)
  788. EREF =1.D0
  789. DJACER=DJAC*EREF
  790. DO I=1,LRB
  791. DO J=1,LRN
  792. JJ=J+LRB
  793. r_z = 0.D0
  794. DO K=1,NSTMU
  795. r_z = r_z + COBMA(K)*BGENE(K,I)
  796. ENDDO
  797. r_z = r_z * DJACER * XGENE(1,J)
  798. REL(JJ,I)=REL(JJ,I) - r_z
  799. ENDDO
  800. ENDDO
  801. *
  802. IF(XMOB.EQ.0.D0) THEN
  803. UNSURM=0.D0
  804. ELSE
  805. UNSURM=1.D0 / XMOB
  806. ENDIF
  807. COMJAC=UNSURM*DJAC*EREF*EREF
  808. DO I=1,LRN
  809. II=I+LRB
  810. r_z = COMJAC*XGENE(1,I)
  811. DO J=1,I
  812. JJ=J+LRB
  813. REL(II,JJ)=REL(II,JJ)-r_z*XGENE(1,J)
  814. ENDDO
  815. ENDDO
  816. C
  817. COMJAC=UNSURM*DJAC*FREF
  818. DO I=1,NBNN
  819. II=I+LRB
  820. DO J=1,I
  821. JJ=J+LRB
  822. r_z = 0.D0
  823. DO K=1,NCOT
  824. r_z = r_z + YGENE(K,I)*YGENE(K,J)
  825. ENDDO
  826. REL(II,JJ)=REL(II,JJ) + (COMJAC*r_z)
  827. ENDDO
  828. ENDDO
  829. *
  830. 4079 CONTINUE
  831. IF (ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) THEN
  832. INTERR(1)=IB
  833. CALL ERREUR(195)
  834. noer=195
  835. GOTO 9979
  836. ENDIF
  837. C
  838. C REMPLISSAGE DE XMATRI
  839. C
  840. CALL REMPMT(REL,LRE,RE(1,1,ib))
  841. *
  842. 3079 CONTINUE
  843. c
  844. IF(IRTD.EQ.0) THEN
  845. MOTERR(1:8)=CMATE
  846. MOTERR(9:16)=NOMFR(MFR/2+1)
  847. INTERR(1)=IFOUR
  848. CALL ERREUR(81)
  849. ENDIF
  850. 9979 CONTINUE
  851. SEGSUP WRK1,WRK2,WRK5,WRK55
  852. C* IF ((MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4).AND.IMAT.EQ.1) THEN
  853. IF (IPMIN2.NE.0) THEN
  854. SEGDES MINTE2
  855. SEGSUP WRK8
  856. ENDIF
  857. GOTO 510
  858. C_______________________________________________________________________
  859. C
  860. C MILIEUX POREUX - SUITE
  861. C_______________________________________________________________________
  862. C
  863. 173 CONTINUE
  864. C
  865. C CAS NON ISOTROPES NON PREVUS ACTUELLEMENT
  866. IF (IMAT.EQ.1) THEN
  867. IF (MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) THEN
  868. CALL ERREUR(251)
  869. GO TO 510
  870. ENDIF
  871. ELSE
  872. C* ELSE IF (IMAT.EQ.2) THEN
  873. GO TO 99
  874. ENDIF
  875. C
  876. C POUR CES ELEMENTS NBBB = NOMBRE DE NOEUDS
  877. C NBNO = NOMBRE DE FONCTIONS DE FORME
  878. C ON ENLEVE LA PRESSION POREUSE DES CONTRAINTES
  879. C
  880. IF(MFR.EQ.57) IDECAP=2
  881. IF(MFR.EQ.59) IDECAP=3
  882. *
  883. DIM3=1.D0
  884. NCOT=0
  885. NBNO=IPORE
  886. NBBB=NBNN
  887. NSTN=IDECAP
  888. *
  889. **************** AM 08/01/01
  890. ***** NSTMU=2
  891. ***** IF(IFOUR.GE.0) NSTMU=3
  892. *
  893. NSTMU=3
  894. LPP=NBNO-NBBB
  895. LRN = IDECAP*LPP
  896. **** LRB=LRE-LRN
  897. LRB=LRE-(IDECAP*NBBB)
  898. IELE=NUMGEO(MELE)
  899. *
  900. IF(IELE.EQ.6 ) NCOT=3
  901. IF(IELE.EQ.10) NCOT=4
  902. IF(IELE.EQ.15) NCOT=12
  903. IF(IELE.EQ.17) NCOT=9
  904. IF(IELE.EQ.24) NCOT=6
  905. IF(NCOT.EQ.0) THEN
  906. CALL ERREUR(5)
  907. GO TO 510
  908. ENDIF
  909. *
  910. SEGINI WRK1,WRK2,WRK5,WRK55,WRK555
  911.  
  912. DO 3173 IB=1,NBELEM
  913. *
  914. * ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  915. *
  916. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  917. *
  918. CALL ZERO (REL,LRE,LRE)
  919. *
  920. * TRAITEMENT POUR NOEUDS MILIEUX PRESSION
  921. *
  922. FREF = 1.D6
  923. CALL BNPOR2(YGENE,NCOT,IELE)
  924. IF(IERR.NE.0) GO TO 9973
  925.  
  926. * DO 17895 IOI=1,NCOT
  927. * WRITE(6,78927) IOI
  928. *78927 FORMAT(2X,' MATRICE YGENE - LIGNE ',I3)
  929. * WRITE(6,78928) (YGENE(IOI,J),J=1,NBNN)
  930. *78928 FORMAT(8(1X,1PE10.3))
  931. *17895 CONTINUE
  932. C
  933. C BOUCLE SUR LES POINTS DE GAUSS
  934. C
  935. ISDJC=0
  936. DO 4173 IGAU=1,NBPGAU
  937. C
  938. C RECUPERATION DE L'EPAISSEUR
  939. C
  940. IF (IFOUR.EQ.-2)THEN
  941. MPTVAL=IVACAR
  942. IF (IVACAR.NE.0) THEN
  943. MELVAL=IVAL(1)
  944. IF (MELVAL.NE.0) THEN
  945. IGMN=MIN(IGAU,VELCHE(/1))
  946. IBMN=MIN(IB,VELCHE(/2))
  947. DIM3=VELCHE(IGMN,IBMN)
  948. ELSE
  949. DIM3=1.D0
  950. ENDIF
  951. ENDIF
  952. ENDIF
  953. C
  954. NSTB=LHOOK
  955. CALL BNQORE(IGAU,NBNO,NBBB,LRE,IFOUR,NSTB,NSTN,NHRM,
  956. . DIM3,XE,SHPTOT,SHPWRK,BGENE,XGENE,DJAC,IDECAP,LHOOK,1)
  957. IF(DJAC.EQ.0.D0) THEN
  958. INTERR(1)=IB
  959. CALL ERREUR(259)
  960. GOTO 9973
  961. ENDIF
  962. IF(DJAC.LT.0.D0) ISDJC=ISDJC+1
  963. DJAC=ABS(DJAC)*POIGAU(IGAU)
  964. C
  965. * IF(IGAU.EQ.1) THEN
  966. * DO 17892 IOI=1,LHOOK
  967. * WRITE(6,78920) IOI
  968. *78920 FORMAT(2X,' MATRICE BGENE - LIGNE ',I3)
  969. * WRITE(6,78921) (BGENE(IOI,J),J=1,LRE)
  970. *78921 FORMAT(8(1X,1PE10.3))
  971. *17892 CONTINUE
  972. * DO 17893 IOI=1,NSTN
  973. * WRITE(6,78922) IOI
  974. *78922 FORMAT(2X,' MATRICE XGENE - LIGNE ',I3)
  975. * WRITE(6,78923) (XGENE(IOI,J),J=1,LRN)
  976. *78923 FORMAT(8(1X,1PE10.3))
  977. *17893 CONTINUE
  978. * ENDIF
  979.  
  980. MPTVAL=IVAMAT
  981. C*D IF(IMAT.EQ.2) THEN
  982. C*D GO TO 99
  983. C*D ELSE IF (IMAT.EQ.1) THEN
  984. *
  985. DO 9173 IM=1,NMATT
  986. IF (IVAL(IM).NE.0) THEN
  987. MELVAL=IVAL(IM)
  988. IBMN=MIN(IB ,VELCHE(/2))
  989. IGMN=MIN(IGAU,VELCHE(/1))
  990. VALMAT(IM)=VELCHE(IGMN,IBMN)
  991. ELSE
  992. VALMAT(IM)=0.D0
  993. ENDIF
  994. 9173 CONTINUE
  995. *
  996. C*D IF(MATE.EQ.1) THEN
  997. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  998. . CALL DOHMAS(VALMAT,CMATE,IFOUR,LHOOK,1,DDHOOK,IRTD)
  999. *
  1000. C*D ELSE
  1001. C*D GO TO 99
  1002. C*D ENDIF
  1003. C*D ENDIF
  1004. *
  1005. CALL BDBSTS(BGENE,DJAC,DDHOOK,LRE,LHOOK,REL)
  1006. EREF =1.D0
  1007. *
  1008. IF(MFR.EQ.57) THEN
  1009. COBB(1) = VALMAT(3)
  1010. COBB(2) = VALMAT(4)
  1011. CPBB(1) = VALMAT(5)
  1012. CPBB(2) = VALMAT(6)
  1013. KKBB(1,1)= VALMAT(7)
  1014. KKBB(1,2)= VALMAT(8)
  1015. KKBB(2,1)= VALMAT(9)
  1016. KKBB(2,2)= VALMAT(10)
  1017. *
  1018. ELSE IF(MFR.EQ.59) THEN
  1019. COBB(1) = VALMAT(3)
  1020. COBB(2) = VALMAT(4)
  1021. COBB(3) = VALMAT(5)
  1022. CPBB(1) = VALMAT(6)
  1023. CPBB(2) = VALMAT(7)
  1024. CPBB(3) = VALMAT(8)
  1025. KKBB(1,1)= VALMAT(9)
  1026. KKBB(1,2)= VALMAT(10)
  1027. KKBB(1,3)= VALMAT(11)
  1028. KKBB(2,1)= VALMAT(12)
  1029. KKBB(2,2)= VALMAT(13)
  1030. KKBB(2,3)= VALMAT(14)
  1031. KKBB(3,1)= VALMAT(15)
  1032. KKBB(3,2)= VALMAT(16)
  1033. KKBB(3,3)= VALMAT(17)
  1034. ENDIF
  1035. *
  1036. DJACER=DJAC*EREF
  1037.  
  1038. DO IPR=1,IDECAP
  1039. LRBDEC=LRB + (IPR-1)*NBBB
  1040. LPPDEC= (IPR-1)*LPP
  1041. COMJAC=COBB(IPR)*DJACER
  1042. DO I=1,LRB
  1043. r_z = 0.D0
  1044. DO K=1,NSTMU
  1045. r_z = r_z + BGENE(K,I)
  1046. ENDDO
  1047. r_z = r_z * COMJAC
  1048. DO J=1,LPP
  1049. JJ=J+LRBDEC
  1050. JX=J+LPPDEC
  1051. REL(I,JJ)=REL(I,JJ)-r_z*XGENE(IPR,JX)
  1052. ENDDO
  1053. ENDDO
  1054. ENDDO
  1055. *
  1056. DO IPR=1,IDECAP
  1057. LRBDEC=LRB + (IPR-1)*NBBB
  1058. LPPDEC= (IPR-1)*LPP
  1059. COMJAC=CPBB(IPR)*DJACER
  1060. DO I=1,LRB
  1061. r_z = 0.D0
  1062. DO K=1,NSTMU
  1063. r_z = r_z + BGENE(K,I)
  1064. ENDDO
  1065. r_z = COMJAC*r_z
  1066. DO J=1,LPP
  1067. JJ=J+LRBDEC
  1068. JX=J+LPPDEC
  1069. * ici - pour bsig
  1070. REL(JJ,I)=REL(JJ,I)-r_z*XGENE(IPR,JX)
  1071. ENDDO
  1072. ENDDO
  1073. ENDDO
  1074. *
  1075. COMJAC=DJAC*EREF*EREF
  1076. CALL ZERO(XREL,LRN,LRN)
  1077. CALL BDBSTS(XGENE,COMJAC,KKBB,LRN,NSTN,XREL)
  1078.  
  1079. DO IPR=1,IDECAP
  1080. IRBDEC=LRB + (IPR-1)*NBBB
  1081. IPPDEC= (IPR-1)*LPP
  1082. DO JPR=1,IDECAP
  1083. JRBDEC=LRB + (JPR-1)*NBBB
  1084. JPPDEC= (JPR-1)*LPP
  1085. DO I=1,LPP
  1086. II=I+IRBDEC
  1087. IX=I+IPPDEC
  1088. DO J=1,LPP
  1089. JJ=J+JRBDEC
  1090. JX=J+JPPDEC
  1091.  
  1092. * IF(IGAU.EQ.1) THEN
  1093. * PRINT *,'I =',I,' IX=',IX,' II=',II
  1094. * PRINT *,'J =',J,' JX=',JX,' JJ=',JJ, ' XREL=',XREL(IX,JX)
  1095. * ENDIF
  1096.  
  1097. REL(II,JJ)=REL(II,JJ)-XREL(IX,JX)
  1098. ENDDO
  1099. ENDDO
  1100. ENDDO
  1101. ENDDO
  1102. C
  1103. DO IPR=1,IDECAP
  1104. COMJAC=KKBB(IPR,IPR)*DJAC*FREF
  1105. LRBDEC=LRB + (IPR-1)*NBBB
  1106. DO I=1,NBNN
  1107. II=I+LRBDEC
  1108. DO J=1,NBNN
  1109. JJ=J+LRBDEC
  1110. r_z = 0.D0
  1111. DO K=1,NCOT
  1112. r_z = r_z + YGENE(K,I)*YGENE(K,J)
  1113. ENDDO
  1114. REL(II,JJ)=REL(II,JJ) + (COMJAC * r_z)
  1115. ENDDO
  1116. ENDDO
  1117. ENDDO
  1118. *
  1119. 4173 CONTINUE
  1120. IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) THEN
  1121. INTERR(1)=IB
  1122. CALL ERREUR(195)
  1123. noer=195
  1124. GOTO 9973
  1125. ENDIF
  1126. C
  1127. C REMPLISSAGE DE XMATRI
  1128. C
  1129. CALL REMPMS(REL,LRE,RE(1,1,ib))
  1130. 3173 CONTINUE
  1131. c
  1132. IF(IRTD.EQ.0) THEN
  1133. MOTERR(1:8)=CMATE
  1134. MOTERR(9:16)=NOMFR(MFR/2+1)
  1135. INTERR(1)=IFOUR
  1136. CALL ERREUR(81)
  1137. ENDIF
  1138. 9973 CONTINUE
  1139. SEGSUP WRK1,WRK2,WRK5,WRK55,WRK555
  1140. GOTO 510
  1141. C_______________________________________________________________________
  1142. C
  1143. C JOINTS EN FORMULATION MILIEUX POREUX
  1144. C_______________________________________________________________________
  1145. C
  1146. 80 CONTINUE
  1147. C
  1148. * CAS NON PREVUS
  1149. IF (IMAT.EQ.1) THEN
  1150. IF (MATE.NE.1) GOTO 99
  1151. ELSE IF (IMAT.EQ.2) THEN
  1152. GOTO 99
  1153. ENDIF
  1154. C
  1155. C POUR CES ELEMENTS NBBB = NOMBRE DE NOEUDS
  1156. C NBNO = NOMBRE DE FONCTIONS DE FORME
  1157. C ON ENLEVE LA PRESSION POREUSE DES CONTRAINTES
  1158. C
  1159. NCOT=0
  1160. NBNO=IPORE
  1161. NBBB=NBNN
  1162. NSTN=1
  1163. NSTMU=2
  1164. IF(IFOUR.EQ.2) NSTMU=3
  1165. LRN=(NBNO-NBBB)*3/2
  1166. LPP=LRN
  1167. LRB=LRE-NBNN
  1168. IELE=NUMGEO(MELE)
  1169. IF(IELE.EQ.29) NCOT=2
  1170. IF(IELE.EQ.30) NCOT=6
  1171. IF(IELE.EQ.31) NCOT=8
  1172. IF(NCOT.EQ.0) THEN
  1173. CALL ERREUR(5)
  1174. GO TO 510
  1175. ENDIF
  1176. *
  1177. SEGINI WRK1,WRK2,WRK3,WRK5,WRK55
  1178. *
  1179. DO 3080 IB=1,NBELEM
  1180. *
  1181. * ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  1182. *
  1183. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1184. *
  1185. * CALCUL DES AXES LOCAUX ET DES COORDONNES LOCALES
  1186. *
  1187. CALL JOPLOC(XE,SHPTOT,NBBB,NBNO,IFOUR,XEL,BPSS)
  1188. *
  1189. CALL ZERO (REL,LRE,LRE)
  1190. *
  1191. CALL INTDEL(XNTH,XNTB,XNTT,LRN,MELE)
  1192. *
  1193. * TRAITEMENT POUR NOEUDS MILIEUX PRESSION
  1194. *
  1195. FREF = 1.D6
  1196. CALL BNPOR2(YGENE,NCOT,IELE)
  1197. IF (IERR.NE.0) GOTO 9980
  1198. *
  1199. * BOUCLE SUR LES POINTS DE GAUSS
  1200. *
  1201. ISDJC=0
  1202. DO 4080 IGAU=1,NBPGAU
  1203. *
  1204. CALL BNPORJ(IGAU,NBNO,NBBB,LRE,IFOUR,LHOOK,NSTN,XE,XEL,
  1205. . SHPTOT,SHPWRK,BPSS,BGENE,XGENE,DJAC,1)
  1206. IF (DJAC.EQ.0.D0) THEN
  1207. INTERR(1)=IB
  1208. CALL ERREUR(259)
  1209. GOTO 9980
  1210. ENDIF
  1211. IF(DJAC.LT.0.D0) ISDJC=ISDJC+1
  1212. DJAC=ABS(DJAC)*POIGAU(IGAU)
  1213. *
  1214. MPTVAL=IVAMAT
  1215. C*D IF(IMAT.EQ.2) THEN
  1216. C*D GO TO 99
  1217. C*D ELSE IF (IMAT.EQ.1) THEN
  1218. *
  1219. DO 9080 IM=1,NMATT
  1220. IF (IVAL(IM).NE.0) THEN
  1221. MELVAL=IVAL(IM)
  1222. IBMN=MIN(IB ,VELCHE(/2))
  1223. IGMN=MIN(IGAU,VELCHE(/1))
  1224. VALMAT(IM)=VELCHE(IGMN,IBMN)
  1225. ELSE
  1226. VALMAT(IM)=0.D0
  1227. ENDIF
  1228. 9080 CONTINUE
  1229. *
  1230. C*D IF(MATE.EQ.1) THEN
  1231. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1232. . CALL DOUO88(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  1233.  
  1234. C*D ELSE
  1235. C*D GO TO 99
  1236. C*D ENDIF
  1237. C*D ENDIF
  1238. *
  1239. CALL BDBS1(BGENE,DJAC,DDHOOK,LRE,LHOOK,REL,MFR,IFOUR,MATE,
  1240. . IGAU,IMAT,0.D0)
  1241. EREF =1.D0
  1242. *
  1243. COBMA(NSTMU)=VALMAT(3)
  1244. XMOB=VALMAT(4)
  1245. *
  1246. IF(XMOB.EQ.0.D0) THEN
  1247. UNSURM=0.D0
  1248. ELSE
  1249. UNSURM=1.D0 / XMOB
  1250. ENDIF
  1251. *
  1252. DJACER=DJAC*EREF*COBMA(NSTMU)
  1253. DO I=1,LRB
  1254. r_z = DJACER*BGENE(NSTMU,I)
  1255. DO J=1,LRN
  1256. JJ=J+LRB
  1257. REL(JJ,I)=REL(JJ,I)-r_z*XGENE(1,J)*XNTT(J)
  1258. ENDDO
  1259. ENDDO
  1260. *
  1261. COMJAC=UNSURM*DJAC*EREF*EREF
  1262. DO I=1,LRN
  1263. II=I+LRB
  1264. r_z = COMJAC*XGENE(1,I)*XNTT(I)
  1265. DO J=1,I
  1266. JJ=J+LRB
  1267. REL(II,JJ)=REL(II,JJ)-r_z*XGENE(1,J)*XNTT(J)
  1268. ENDDO
  1269. ENDDO
  1270. *
  1271. COMJAC=UNSURM*DJAC*FREF
  1272. DO I=1,NBNN
  1273. II=I+LRB
  1274. DO J=1,I
  1275. JJ=J+LRB
  1276. r_z = 0.D0
  1277. DO K=1,NCOT
  1278. r_z = r_z + YGENE(K,I)*YGENE(K,J)
  1279. ENDDO
  1280. REL(II,JJ)=REL(II,JJ)+COMJAC*r_z
  1281. ENDDO
  1282. ENDDO
  1283. *
  1284. 4080 CONTINUE
  1285. IF (ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) THEN
  1286. INTERR(1)=IB
  1287. CALL ERREUR(195)
  1288. noer=195
  1289. GOTO 9980
  1290. ENDIF
  1291. *
  1292. * REMPLISSAGE DE XMATRI
  1293. *
  1294. CALL REMPMT(REL,LRE,RE(1,1,IB))
  1295. 3080 CONTINUE
  1296.  
  1297. IF(IRTD.EQ.0) THEN
  1298. MOTERR(1:8)=CMATE
  1299. MOTERR(9:16)=NOMFR(MFR/2+1)
  1300. INTERR(1)=IFOUR
  1301. CALL ERREUR(81)
  1302. ENDIF
  1303. 9980 CONTINUE
  1304. SEGSUP WRK1,WRK2,WRK3,WRK5,WRK55
  1305. GOTO 510
  1306. *
  1307. C_______________________________________________________________________
  1308. C
  1309. C JOINTS EN FORMULATION MILIEUX POREUX - SUITE
  1310. C_______________________________________________________________________
  1311. C
  1312. 185 CONTINUE
  1313.  
  1314. C
  1315. * CAS NON ISOTROPES NON PREVUS ACTUELLEMENT
  1316. IF (IMAT.EQ.1) THEN
  1317. IF (MATE.NE.1) GOTO 99
  1318. ELSE
  1319. GOTO 99
  1320. ENDIF
  1321. C
  1322. C POUR CES ELEMENTS NBBB = NOMBRE DE NOEUDS
  1323. C NBNO = NOMBRE DE FONCTIONS DE FORME
  1324. C ON ENLEVE LA PRESSION POREUSE DES CONTRAINTES
  1325. C
  1326. IF(MFR.EQ.57) IDECAP=2
  1327. IF(MFR.EQ.59) IDECAP=3
  1328. *
  1329. NCOT=0
  1330. NBNO=IPORE
  1331. NBBB=NBNN
  1332. NSTN=IDECAP
  1333. NSTMU=2
  1334. IF(IFOUR.EQ.2) NSTMU=3
  1335. LPP=(NBNO-NBBB)*3/2
  1336. LRN=IDECAP*LPP
  1337. LRB=LRE-IDECAP*NBNN
  1338. IELE=NUMGEO(MELE)
  1339. IF(IELE.EQ.29) NCOT=2
  1340. IF(IELE.EQ.30) NCOT=6
  1341. IF(IELE.EQ.31) NCOT=8
  1342. IF(NCOT.EQ.0) THEN
  1343. CALL ERREUR(5)
  1344. GO TO 510
  1345. ENDIF
  1346. *
  1347. SEGINI WRK1,WRK2,WRK3,WRK5,WRK55,WRK555
  1348. *
  1349. DO 3185 IB=1,NBELEM
  1350. *
  1351. * ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB
  1352. *
  1353. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  1354. *
  1355. * CALCUL DES AXES LOCAUX ET DES COORDONNES LOCALES
  1356. *
  1357. CALL JOPLOC(XE,SHPTOT,NBBB,NBNO,IFOUR,XEL,BPSS)
  1358. *
  1359. CALL ZERO (REL,LRE,LRE)
  1360. *
  1361. CALL INTDEL(XNTH,XNTB,XNTT,LPP,MELE)
  1362. *
  1363. * TRAITEMENT POUR NOEUDS MILIEUX PRESSION
  1364. *
  1365. FREF = 1.D6
  1366. CALL BNPOR2(YGENE,NCOT,IELE)
  1367. IF (IERR.NE.0) GOTO 9985
  1368. *
  1369. * BOUCLE SUR LES POINTS DE GAUSS
  1370. *
  1371. ISDJC=0
  1372. DO 4185 IGAU=1,NBPGAU
  1373. *
  1374. NSTB=LHOOK
  1375. CALL BNPQRJ(IGAU,NBNO,NBBB,LRE,IFOUR,LHOOK,NSTN,XE,XEL,
  1376. . SHPTOT,SHPWRK,BPSS,BGENE,XGENE,DJAC,IDECAP,NSTB,1)
  1377. IF (DJAC.EQ.0.D0) THEN
  1378. INTERR(1)=IB
  1379. CALL ERREUR(259)
  1380. GOTO 9985
  1381. ENDIF
  1382. IF(DJAC.LT.0.D0) ISDJC=ISDJC+1
  1383. DJAC=ABS(DJAC)*POIGAU(IGAU)
  1384. *
  1385. MPTVAL=IVAMAT
  1386. C*D IF(IMAT.EQ.2) THEN
  1387. C*D GO TO 99
  1388. C*D ELSE IF (IMAT.EQ.1) THEN
  1389. *
  1390. DO 9185 IM=1,NMATT
  1391. IF (IVAL(IM).NE.0) THEN
  1392. MELVAL=IVAL(IM)
  1393. IBMN=MIN(IB ,VELCHE(/2))
  1394. IGMN=MIN(IGAU,VELCHE(/1))
  1395. VALMAT(IM)=VELCHE(IGMN,IBMN)
  1396. ELSE
  1397. VALMAT(IM)=0.D0
  1398. ENDIF
  1399. 9185 CONTINUE
  1400. *
  1401. C*D IF(MATE.EQ.1) THEN
  1402. IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1))
  1403. . CALL DOUO88(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD)
  1404.  
  1405. C*D ELSE
  1406. C*D GO TO 99
  1407. C*D ENDIF
  1408. C*D ENDIF
  1409. *
  1410. CALL BDBSTS(BGENE,DJAC,DDHOOK,LRE,LHOOK,REL)
  1411.  
  1412. EREF =1.D0
  1413. *
  1414. IF(MFR.EQ.57) THEN
  1415. COBB(1) = VALMAT(3)
  1416. COBB(2) = VALMAT(4)
  1417. CPBB(1) = VALMAT(5)
  1418. CPBB(2) = VALMAT(6)
  1419. KKBB(1,1)= VALMAT(7)
  1420. KKBB(1,2)= VALMAT(8)
  1421. KKBB(2,1)= VALMAT(9)
  1422. KKBB(2,2)= VALMAT(10)
  1423. *
  1424. ELSE IF(MFR.EQ.59) THEN
  1425. COBB(1) = VALMAT(3)
  1426. COBB(2) = VALMAT(4)
  1427. COBB(3) = VALMAT(5)
  1428. CPBB(1) = VALMAT(6)
  1429. CPBB(2) = VALMAT(7)
  1430. CPBB(3) = VALMAT(8)
  1431. KKBB(1,1)= VALMAT(9)
  1432. KKBB(1,2)= VALMAT(10)
  1433. KKBB(1,3)= VALMAT(11)
  1434. KKBB(2,1)= VALMAT(12)
  1435. KKBB(2,2)= VALMAT(13)
  1436. KKBB(2,3)= VALMAT(14)
  1437. KKBB(3,1)= VALMAT(15)
  1438. KKBB(3,2)= VALMAT(16)
  1439. KKBB(3,3)= VALMAT(17)
  1440. ENDIF
  1441. *
  1442. DO IPR=1,IDECAP
  1443. LPPDEC= (IPR-1)*LPP
  1444. DO J=1,LPP
  1445. JX=J+LPPDEC
  1446. XGENE(IPR,JX)= XGENE(IPR,JX)*XNTT(J)
  1447. ENDDO
  1448. ENDDO
  1449. *
  1450. DJACER=DJAC*EREF
  1451.  
  1452. DO IPR=1,IDECAP
  1453. LRBDEC=LRB + (IPR-1)*NBBB
  1454. LPPDEC= (IPR-1)*LPP
  1455. COMJAC=COBB(IPR)*DJACER
  1456. DO I=1,LRB
  1457. r_z = COMJAC*BGENE(NSTMU,I)
  1458. DO J=1,LPP
  1459. JJ=J+LRBDEC
  1460. JX=J+LPPDEC
  1461. REL(I,JJ)=REL(I,JJ)-r_z*XGENE(IPR,JX)
  1462. ENDDO
  1463. ENDDO
  1464. ENDDO
  1465. *
  1466.  
  1467. DO IPR=1,IDECAP
  1468. LRBDEC=LRB + (IPR-1)*NBBB
  1469. LPPDEC= (IPR-1)*LPP
  1470. COMJAC=CPBB(IPR)*DJACER
  1471. DO I=1,LRB
  1472. r_z = COMJAC*BGENE(NSTMU,I)
  1473. DO J=1,LPP
  1474. JJ=J+LRBDEC
  1475. JX=J+LPPDEC
  1476. REL(JJ,I)=REL(JJ,I)-r_z*XGENE(IPR,JX)
  1477. ENDDO
  1478. ENDDO
  1479. ENDDO
  1480. *
  1481. COMJAC=DJAC*EREF*EREF
  1482. CALL ZERO(XREL,LRN,LRN)
  1483. CALL BDBSTS(XGENE,COMJAC,KKBB,LRN,NSTN,XREL)
  1484.  
  1485. DO IPR=1,IDECAP
  1486. IRBDEC=LRB + (IPR-1)*NBBB
  1487. IPPDEC= (IPR-1)*LPP
  1488. DO JPR=1,IDECAP
  1489. JRBDEC=LRB + (JPR-1)*NBBB
  1490. JPPDEC= (JPR-1)*LPP
  1491. DO I=1,LPP
  1492. II=I+IRBDEC
  1493. IX=I+IPPDEC
  1494. DO J=1,LPP
  1495. JJ=J+JRBDEC
  1496. JX=J+JPPDEC
  1497.  
  1498. * IF(IGAU.EQ.1) THEN
  1499. * PRINT *,'I =',I,' IX=',IX,' II=',II
  1500. * PRINT *,'J =',J,' JX=',JX,' JJ=',JJ, ' XREL=',XREL(IX,JX)
  1501. * ENDIF
  1502.  
  1503. REL(II,JJ)=REL(II,JJ)-XREL(IX,JX)
  1504. ENDDO
  1505. ENDDO
  1506. ENDDO
  1507. ENDDO
  1508. *
  1509. DO IPR=1,IDECAP
  1510. COMJAC=KKBB(IPR,IPR)*DJAC*FREF
  1511. LRBDEC=LRB + (IPR-1)*NBBB
  1512. DO I=1,NBNN
  1513. II=I+LRBDEC
  1514. DO J=1,NBNN
  1515. JJ=J+LRBDEC
  1516. r_z = 0.D0
  1517. DO K=1,NCOT
  1518. r_z = r_z + YGENE(K,I)*YGENE(K,J)
  1519. ENDDO
  1520. REL(II,JJ)=REL(II,JJ)+COMJAC*r_z
  1521. ENDDO
  1522. ENDDO
  1523. ENDDO
  1524. *
  1525. 4185 CONTINUE
  1526. IF (ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) THEN
  1527. INTERR(1)=IB
  1528. CALL ERREUR(195)
  1529. noer=195
  1530. GOTO 9980
  1531. ENDIF
  1532. *
  1533. * REMPLISSAGE DE XMATRI
  1534. *
  1535. CALL REMPMS(REL,LRE,RE(1,1,IB))
  1536. 3185 CONTINUE
  1537.  
  1538. IF(IRTD.EQ.0) THEN
  1539. MOTERR(1:8)=CMATE
  1540. MOTERR(9:16)=NOMFR(MFR/2+1)
  1541. INTERR(1)=IFOUR
  1542. CALL ERREUR(81)
  1543. ENDIF
  1544. 9985 CONTINUE
  1545. SEGSUP WRK1,WRK2,WRK3,WRK5,WRK55,WRK555
  1546. GOTO 510
  1547. *
  1548. * ERREUR : CAS NON PREVU
  1549. *
  1550. 99 CONTINUE
  1551. MOTERR(1:4)=NOMTP(MELE)
  1552. MOTERR(5:12)='RIGI2 '
  1553. CALL ERREUR(86)
  1554. *
  1555. 510 CONTINUE
  1556. * WRITE (*,*) 'Sortie de RIGI2.'
  1557. * SEGDES,XMATRI
  1558. SEGSUP,MVELCH
  1559.  
  1560. c RETURN
  1561. END
  1562.  
  1563.  
  1564.  

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