Télécharger tumu.eso

Retour à la liste

Numérotation des lignes :

tumu
  1. C TUMU SOURCE FANDEUR 22/01/03 21:15:53 11237
  2. SUBROUTINE TUMU(LCH1,IRIG1,DFLO,IRIG2)
  3. ************************************************************************
  4. * NOM : TUMU
  5. ************************************************************************
  6. * DESCRIPTION : Realise le produit tU*M*U ou M est une matrice carree
  7. * et U est une matrice rectangle dont les colonnes sont
  8. * donnees par un objet LISTCHPO
  9. *
  10. * Les multiplicateurs de Lagrange sont ignores
  11. *
  12. * Les inconnues duales de M doivent avoir ete definies
  13. * dans la liste NOMDU de l'include CCHAMP pour savoir
  14. * comment effectuer la multiplication a gauche
  15. * ***********************************************************
  16. *
  17. *
  18. * U[N;L]
  19. * |
  20. * |
  21. * V
  22. * +-----------+ +---+---+---+---+
  23. * | | | C | C | | C |
  24. * | M | | H | H | . | H |
  25. * | | | P | P | . | P |
  26. * tU[L;N] | [N;N] | | # | # | . | # |
  27. * | | | | 1 | 2 | | L |
  28. * | +-----------+ +---+---+---+---+
  29. * V
  30. * +-----------+ +-----------+ +---------------+
  31. * | CHPOINT#1 | | CHP#1 * M | | |
  32. * +-----------+ +-----------+ | |
  33. * | CHPOINT#2 | | CHP#2 * M | | TUMU |
  34. * +-----------+ +-----------+ | |
  35. * | ... | | ... | | [L;L] |
  36. * +-----------+ +-----------+ | |
  37. * | CHPOINT#L | | CHP#L * M | | |
  38. * +-----------+ +-----------+ +---------------+
  39. *
  40. *
  41. * avec : L = nombre de champs
  42. * N = nombre d'inconnues
  43. * (triplet noeud/composante/harmonique)
  44. *
  45. ************************************************************************
  46. * APPELE PAR : pod.eso
  47. ************************************************************************
  48. * ENTREES :: LCH1 = POINTEUR VERS UN OBJET LISTCHPO
  49. * IRIG1 = POINTEUR VERS UN OBJET RIGIDITE
  50. * DFLO = COEFFICIENT MULTIPLICATEUR
  51. * SORTIES :: IRIG2 = POINTEUR VERS UN OBJET RIGIDITE
  52. ************************************************************************
  53.  
  54. IMPLICIT INTEGER(I-N)
  55. IMPLICIT REAL*8 (A-H,O-Z)
  56.  
  57. -INC PPARAM
  58. -INC CCOPTIO
  59. -INC SMCOORD
  60. -INC SMCHPOI
  61. -INC SMLCHPO
  62. -INC SMELEME
  63. -INC SMRIGID
  64. -INC CCHAMP
  65. -INC CCREEL
  66.  
  67. *
  68. * ICPR(I) EST LE NUMERO LOCAL (DANS LE SUPPORT GEOMETRIQUE DU
  69. * LISTCHPO LCH1) DU I-EME NOEUD GLOBAL (DANS LA TABLE XCOORD)
  70. SEGMENT/TICPR/(ICPR(NOMAX))
  71. *
  72. * TINCO(I) = [MCOMP(I) ; IHARM(I)]
  73. * TINCO DEFINIT LES NBINC INCONNUES DE LA MATRICE IRIG1
  74. * ********************************
  75. * MCOMP(I) EST LE NOM DE COMPOSANTE DE LA I-EME INCONNUE
  76. * IHARM(I) EST LE NUMERO D'HARMONIQUE DE LA I-EME INCONNUE
  77. SEGMENT,TCOMP
  78. CHARACTER*(LOCOMP) MCOMP(0)
  79. ENDSEGMENT
  80. SEGMENT,IHARM(0)
  81. *
  82. * IMAI(I) EST LE MAILLAGE ASSOCIE AU I-EME SOUPO DU PREMIER CHPOINT
  83. * IGLO(I,J) EST L'INCONNUE DE TINCO QUI CORRESPOND A L'INCONNUE
  84. * I DU SOUPO J DU PREMIER CHPOINT
  85. * IPOV(I,J) EST LE MPOVAL DU SOUPO DU J-EME CHPOINT QUI CORRESPOND
  86. * AU I-EME SOUPO DU PREMIER CHPOINT (IPOV=0 SI LE SOUPO
  87. * EST ASSOCIE AUX MULT. DE LAGRANGE)
  88. * LA COMPOSANTE I DU SOUPO J DU PREMIER CHPOINT EST EN POSITION
  89. * IINC(I,J,K) DANS LE SOUPO CORRESPONDANT DU K-EME CHPOINT
  90. SEGMENT TRAV1
  91. INTEGER IMAI(NBSOU)
  92. INTEGER IGLO(NXMAX,NBSOU)
  93. INTEGER IPOV(NBSOU,NBCHP)
  94. INTEGER IINC(NXMAX,NBSOU,NBCHP)
  95. ENDSEGMENT
  96. *
  97. * VPO(I,J,K) EST LA VALEUR DU K-EME CHPOINT PRISE POUR LE I-EME
  98. * NOEUD LOCAL ET POUR LA J-EME INCONNUE DE TINCO
  99. * CC(I) ET DD(I) SONT LES VALEURS EXTRAITES DE VPO POUR FORMER LES
  100. * VECTEURS ELEMENTAIRES (ASSOCIES A L'ELEMENT IEL)
  101. * QUI SERONT MULTIPLIES PAR LE TABLEAU RE(*,*,IEL)
  102. * IPOSP(I) DONNE LA POSITION DANS TINCO DE LA I-EME INCONNUE PRIMALE
  103. * D'UNE MATRICE ELEMENTAIRE
  104. * IPOSD(I) DONNE LA POSITION DANS TINCO DE LA I-EME INCONNUE DUALE
  105. * D'UNE MATRICE ELEMENTAIRE
  106. SEGMENT TRAV2
  107. REAL*8 VPO(NBPOI,NBINC,NBCHP)
  108. REAL*8 CC(NLIGMA),DD(NLIGMA)
  109. INTEGER IPOSP(NLIGMA)
  110. INTEGER IPOSD(NLIGMA)
  111. ENDSEGMENT
  112. *
  113. CHARACTER*(LOCOMP) MOCOMP
  114. *
  115. *
  116. *
  117. * +---------------------------------------------------------------+
  118. * | |
  119. * | T R A V A I L P R E L I M I N A I R E |
  120. * | |
  121. * +---------------------------------------------------------------+
  122. *
  123. MLCHPO=LCH1
  124. SEGACT,MLCHPO
  125. *
  126. * ==========================================================
  127. * CONSTRUCTION DE LA LISTE DES INCONNUES DE LA MATRICE IRIG1
  128. * (= COUPLE NOM_DE_COMPOSANTE_PRIMALE + NUMERO_HARMONIQUE)
  129. * ==========================================================
  130. *
  131. MRIGID=IRIG1
  132. SEGACT,MRIGID
  133. NRIGEL=IRIGEL(/2)
  134. *
  135. SEGINI,TCOMP,IHARM
  136. *
  137. * BOUCLE SUR LES RIGIDITES ELEMENTAIRES
  138. NLIGMA=0
  139. DO IRI=1,NRIGEL
  140. DESCR=IRIGEL(3,IRI)
  141. NUHAR=IRIGEL(5,IRI)
  142. SEGACT,DESCR
  143. NLIGRE=LISINC(/2)
  144. IF (NLIGRE.GT.NLIGMA) NLIGMA=NLIGRE
  145. DO 1 I1=1,NLIGRE
  146. MOCOMP=LISINC(I1)
  147. DO 2 I2=1,NBINC
  148. IF (MOCOMP.NE.MCOMP(I2)) GOTO 2
  149. IF (NUHAR .EQ.IHARM(I2)) GOTO 1
  150. 2 CONTINUE
  151. MCOMP(**)=MOCOMP
  152. IHARM(**)=NUHAR
  153. 1 CONTINUE
  154. ENDDO
  155. *
  156. *
  157. * ===================================
  158. * NOMBRE DE CHPOINTS DANS LE LISTCHPO
  159. * ===================================
  160. *
  161. NBCHP=ICHPOI(/1)
  162. IF (NBCHP.EQ.0) THEN
  163. MOTERR(1:8)='LISTCHPO'
  164. INTERR(1)=LCH1
  165. CALL ERREUR(356)
  166. RETURN
  167. ENDIF
  168. *
  169. *
  170. * ===============================================================
  171. * CORRESPONDANCE ENTRE LES INCONNUES DU PREMIER CHPOINT ET CELLES
  172. * DES CHPOINTS SUIVANTS + CORRESPONDANCE AVEC LA LISTE GLOBALE
  173. * TINCO DES INCONNUES DE LA MATRICE (REMPLISSAGE DE TRAV1)
  174. * CORRESPONDANCE ENTRE LES NUMEROTATIONS LOCALE ET GLOBALE
  175. * (REMPLISSAGE DE ICPR)
  176. * ===============================================================
  177. *
  178. MCHPO1=ICHPOI(1)
  179. SEGACT,MCHPO1
  180. *
  181. NBSOU=MCHPO1.IPCHP(/1)
  182. IF (NBSOU.EQ.0) THEN
  183. MOTERR(1:8)='CHPOINT'
  184. CALL ERREUR(1027)
  185. RETURN
  186. ENDIF
  187. *
  188. NXMAX=3
  189. SEGINI,TRAV1
  190. *
  191. segact mcoord*mod
  192. NOMAX=nbpts
  193. SEGINI,TICPR
  194. NBPOI=0
  195. *
  196. *
  197. * **************************************
  198. * BOUCLE 1 SUR LES SOUPOS DU 1ER CHPOINT
  199. * **************************************
  200. DO 10 IS1=1,NBSOU
  201. MSOUP1=MCHPO1.IPCHP(IS1)
  202. SEGACT,MSOUP1
  203. *
  204. * ON IGNORE LES MULTIPLICATEURS DE LAGRANGE
  205. NX1=MSOUP1.NOCOMP(/2)
  206. MOCOMP=MSOUP1.NOCOMP(1)
  207. IF (MOCOMP.EQ.'LX'.OR.MOCOMP.EQ.'FLX') THEN
  208. SEGDES,MSOUP1
  209. GOTO 10
  210. ENDIF
  211. *
  212. IF (NX1.GT.NXMAX) THEN
  213. NXMAX=NX1
  214. SEGADJ,TRAV1
  215. ENDIF
  216. *
  217. * CORRESPONDANCE ENTRE LES INCONNUES DU SOUPO ET CELLES DE TINCO
  218. DO IX1=1,NX1
  219. MOCOMP=MSOUP1.NOCOMP(IX1)
  220. NOHA =MSOUP1.NOHARM(IX1)
  221. DO 11 IX2=1,NBINC
  222. IF (MOCOMP.NE.MCOMP(IX2)) GOTO 11
  223. IF (NOHA .NE.IHARM(IX2)) GOTO 11
  224. IGLO(IX1,IS1)=IX2
  225. 11 CONTINUE
  226. IINC(IX1,IS1,1)=IX1
  227. ENDDO
  228. *
  229. * ON VERIFIE QUE LE MAILLAGE N'EST PAS VIDE
  230. IGEO1=MSOUP1.IGEOC
  231. IF (IGEO1.LE.0) THEN
  232. MOTERR(1:8)='CHPOINT'
  233. CALL ERREUR(1027)
  234. RETURN
  235. ENDIF
  236. IMAI(IS1)=IGEO1
  237. IPT1=IGEO1
  238. SEGACT,IPT1
  239. NNO1=IPT1.NUM(/2)
  240. IF (NNO1.EQ.0) GOTO 10
  241. *
  242. * CONSTRUCTION DE LA TABLE ICPR
  243. * (NUMEROTATION GLOBALE <=> LOCALE)
  244. DO 12 I1=1,NNO1
  245. K1=IPT1.NUM(1,I1)
  246. IF (ICPR(K1).NE.0) GOTO 12
  247. NBPOI=NBPOI+1
  248. ICPR(K1)=NBPOI
  249. 12 CONTINUE
  250. SEGDES,IPT1
  251. *
  252. * POINTEUR DIRECT VERS LE SEGMENT MPOVAL
  253. IPOV(IS1,1)=MSOUP1.IPOVAL
  254. *
  255. *
  256. * ********************************
  257. * BOUCLE 2 SUR LES AUTRES CHPOINTS
  258. * ********************************
  259. DO 14 ICH=2,NBCHP
  260. MCHPO2=ICHPOI(ICH)
  261. SEGACT,MCHPO2
  262. NS2=MCHPO2.IPCHP(/1)
  263. *
  264. * **********************************************
  265. * ON VA CHERCHER LE SOUPO CORRESPONDANT A MSOUP1
  266. * => BOUCLE 3 SUR LES SOUPOS DE MCHPO2
  267. * **********************************************
  268. DO 13 IS2=1,NS2
  269. MSOUP2=MCHPO2.IPCHP(IS2)
  270. SEGACT,MSOUP1,MSOUP2
  271. *
  272. * MEME MAILLAGE ?
  273. IGEO2=MSOUP2.IGEOC
  274. IF (IGEO1.NE.IGEO2) THEN
  275. SEGDES,MSOUP2
  276. GOTO 13
  277. ENDIF
  278. *
  279. * MEME NOMBRE DE COMPOSANTES ?
  280. NX2=MSOUP2.NOCOMP(/2)
  281. MOCOMP=MSOUP1.NOCOMP(1)
  282. IF (MOCOMP.EQ.'LX'.OR.MOCOMP.EQ.'FLX'.OR.NX1.NE.NX2) THEN
  283. SEGDES,MSOUP2
  284. GOTO 13
  285. ENDIF
  286. IF (NX2.GT.NXMAX) THEN
  287. NXMAX=NX2
  288. SEGADJ,TRAV1
  289. ENDIF
  290. *
  291. * MEMES LISTES DE COMPOSANTES ?
  292. * => ON FAIT LA CORRESPONDANCE ENTRE LES COMPOSANTES DES
  293. * 2 SOUPOS
  294. DO 15 IX1=1,NX1
  295. MOCOMP=MSOUP1.NOCOMP(IX1)
  296. DO 16 IX2=1,NX2
  297. IF (MOCOMP.NE.MSOUP2.NOCOMP(IX2)) GOTO 16
  298. IF (MSOUP1.NOHARM(IX1).EQ.MSOUP2.NOHARM(IX2)) THEN
  299. IINC(IX1,IS1,ICH)=IX2
  300. GOTO 15
  301. ENDIF
  302. 16 CONTINUE
  303. GOTO 19
  304. 15 CONTINUE
  305. *
  306. * POINTEUR DIRECT VERS LE SEGMENT MPOVAL
  307. IPOV(IS1,ICH)=MSOUP2.IPOVAL
  308. *
  309. * (CHPOINT SUIVANT)
  310. SEGDES,MSOUP2,MCHPO2
  311. GOTO 14
  312. *
  313. 13 CONTINUE
  314. *
  315. * MESSAGE D'ERREUR
  316. * ****************
  317. 19 CONTINUE
  318. WRITE(MOTERR(1:16),FMT='(2I8)') MCHPO1,MCHPO2
  319. CALL ERREUR(135)
  320. RETURN
  321. *
  322. 14 CONTINUE
  323. SEGDES,MSOUP1
  324. *
  325. 10 CONTINUE
  326. SEGDES,MCHPO1,MLCHPO
  327. *
  328. *
  329. * ========================================================
  330. * STOCKAGE DES VALEURS DU LISTCHPO DANS UN TABLEAU ORDONNE
  331. * SELON LA GEOMETRIE LOCALE (ICPR) ET SELON LES INCONNUES
  332. * DE LA MATRICE D'ENTREE (TINCO) => REMPLISSAGE DE TRAV2
  333. * ========================================================
  334. *
  335. SEGINI,TRAV2
  336. DO ICH=1,NBCHP
  337. DO 20 ISOU=1,NBSOU
  338. IPO1=IPOV(ISOU,ICH)
  339. IF (IPO1.EQ.0) GOTO 20
  340. MPOVAL=IPO1
  341. MELEME=IMAI(ISOU)
  342. SEGACT,MELEME,MPOVAL
  343. NNO=VPOCHA(/1)
  344. NIX=VPOCHA(/2)
  345. DO 21 IX=1,NIX
  346. IX1=IGLO(IX,ISOU)
  347. IF (IX1.EQ.0) GOTO 21
  348. IIX=IINC(IX,ISOU,ICH)
  349. DO INO=1,NNO
  350. N1=ICPR(NUM(1,INO))
  351. VPO(N1,IX1,ICH)=VPOCHA(INO,IIX)
  352. ENDDO
  353. 21 CONTINUE
  354. SEGDES,MELEME,MPOVAL
  355. 20 CONTINUE
  356. ENDDO
  357. SEGSUP,TRAV1
  358. *
  359. *
  360. *
  361. * +---------------------------------------------------------------+
  362. * | |
  363. * | C R E A T I O N D U S U P E R - E L E M E N T |
  364. * | |
  365. * +---------------------------------------------------------------+
  366. *
  367. NBSOUS=0
  368. NBELEM=1
  369. NBNN=NBCHP
  370. NBREF=0
  371. SEGINI,IPT1
  372. IPT1.ITYPEL=28
  373. segact mcoord*mod
  374. NBPT1=nbpts
  375. NBPTS=NBPT1+NBNN
  376. SEGADJ,MCOORD
  377. DO K=1,NBNN
  378. K1=(NBPT1+K-1)*(IDIM+1)
  379. XCOOR(K1+1)=K
  380. XCOOR(K1+2)=0
  381. IF (IDIM.EQ.3) XCOOR(K1+3)=0
  382. IPT1.NUM(K,1)=NBPT1+K
  383. ENDDO
  384. SEGDES,IPT1
  385. *
  386. *
  387. *
  388. * +---------------------------------------------------------------+
  389. * | |
  390. * | D E S C R I P T E U R D E L A M A T R I C E |
  391. * | |
  392. * +---------------------------------------------------------------+
  393. *
  394. NLIGRP=NBCHP
  395. NLIGRD=NBCHP
  396. SEGINI,DES1
  397. DO K=1,NBCHP
  398. DES1.LISINC(K)='ALFA'
  399. DES1.LISDUA(K)='FALF'
  400. DES1.NOELEP(K)=K
  401. DES1.NOELED(K)=K
  402. ENDDO
  403. SEGDES,DES1
  404. *
  405. *
  406. *
  407. * +---------------------------------------------------------------+
  408. * | |
  409. * | R E M P L I S S A G E D U C O N T E N U |
  410. * | |
  411. * +---------------------------------------------------------------+
  412. *
  413. NELRIG=1
  414. SEGINI,XMATR1
  415. *
  416. ISYM1=IRIGEL(7,1)
  417. *
  418. * (BOUCLE 1 SUR LES SOUS-MATRICES)
  419. DO 30 IRI=1,NRIGEL
  420. MELEME=IRIGEL(1,IRI)
  421. SEGACT,MELEME
  422. IF (ITYPEL.EQ.22) GOTO 30
  423. *
  424. DESCR=IRIGEL(3,IRI)
  425. SEGACT,DESCR
  426. NINCP=LISINC(/2)
  427. NINCD=LISDUA(/2)
  428. * ON VERIFIE QUE LA MATRICE EST CARREE
  429. IF (NINCP.NE.NINCD) THEN
  430. CALL ERREUR(21)
  431. RETURN
  432. ENDIF
  433. * * ON VERIFIE LA CORRESPONDANCE ENTRE LA LIGNE ET LA COLONNE D'UN
  434. * * NOEUD DONNE
  435. * DO K=1,NINCP
  436. * IF (NOELED(K).NE.NOELEP(K)) THEN
  437. * CALL ERREUR(21)
  438. * RETURN
  439. * ENDIF
  440. * ENDDO
  441. *
  442. NUHAR=IRIGEL(5,IRI)
  443. *
  444. ISYME=IRIGEL(7,IRI)
  445. IF (ISYME.NE.ISYM1) ISYM1=2
  446. *
  447. *
  448. * =========================================================
  449. * CORRESPONDANCE ENTRE LES INCONNUES PRIMALES DE LA MATRICE
  450. * ELEMENTAIRE ET LES INCONNUES "GLOBALES" DU SEGMENT TINCO
  451. * (SELON LESQUELLES SONT ORDONNES TOUS LES VPOCHA)
  452. * =========================================================
  453. *
  454. DO 31 IN1=1,NINCP
  455. MOCOMP=LISINC(IN1)
  456. DO 32 IN2=1,NBINC
  457. IF (MOCOMP.NE.MCOMP(IN2)) GOTO 32
  458. IF (NUHAR .EQ.IHARM(IN2)) THEN
  459. IPOSP(IN1)=IN2
  460. GOTO 31
  461. ENDIF
  462. 32 CONTINUE
  463. 31 CONTINUE
  464. *
  465. *
  466. * ========================================================
  467. * CORRESPONDANCE ENTRE LES INCONNUES DUALES DE LA MATRICE
  468. * ELEMENTAIRE ET LES INCONNUES "GLOBALES" DU SEGMENT TINCO
  469. * L'ASSOCIATION EST FAITE GRACE AUX LISTES DEFINIES DANS
  470. * L'INCLUDE CCHAMP
  471. * ========================================================
  472. *
  473. DO 33 IN1=1,NINCD
  474. MOCOMP=LISDUA(IN1)
  475.  
  476. * ON CHERCHE LA PRIMALE ASSOCIEE A LA DUALE NUMERO IN1
  477. DO IC1=1,LNOMDU
  478. IF (MOCOMP.EQ.NOMDU(IC1)) GOTO 34
  479. ENDDO
  480.  
  481. * ERREUR : COMPOSANTE NON REFERENCEE DANS CCHAMP
  482. MOTERR=MOCOMP
  483. CALL ERREUR(108)
  484. RETURN
  485.  
  486. 34 CONTINUE
  487. MOCOMP=NOMDD(IC1)
  488. DO 35 IN2=1,NBINC
  489. IF (MOCOMP.NE.MCOMP(IN2)) GOTO 35
  490. IF (NUHAR .EQ.IHARM(IN2)) THEN
  491. IPOSD(IN1)=IN2
  492. GOTO 33
  493. ENDIF
  494. 35 CONTINUE
  495.  
  496. CALL ERREUR(21)
  497. RETURN
  498. 33 CONTINUE
  499. *
  500. *
  501. * ================================================
  502. * CALCUL DES PRODUITS MATRICE/VECTEUR ELEMENTAIRES
  503. * ================================================
  504. *
  505. NNO=NUM(/1)
  506. NEL=NUM(/2)
  507. COER=COERIG(IRI)
  508. XMATRI=IRIGEL(4,IRI)
  509. SEGACT,XMATRI
  510. *
  511. * ********************************************
  512. * BOUCLE 2 SUR LES ELEMENTS DE LA SOUS-MATRICE
  513. * ********************************************
  514. DO 36 IEL=1,NEL
  515. *
  516. * ON VERIFIE QUE LA RIGIDITE ELEMENTAIRE POSSEDE UN SUPPORT
  517. * GEOMETRIQUE COMPATIBLE AVEC LE LISTCHPO
  518. DO INO=1,NNO
  519. IF (ICPR(NUM(INO,IEL)).NE.0) GOTO 37
  520. ENDDO
  521. GOTO 36
  522. 37 CONTINUE
  523. *
  524. * ************************************
  525. * BOUCLE 3 SUR LES CHPOINTS "A DROITE"
  526. * ************************************
  527. DO ICH=1,NBCHP
  528. *
  529. * FABRICATION DU VECTEUR ELEMENTAIRE POUR LA
  530. * MULTIPLICATION A DROITE
  531. DO INP=1,NINCP
  532. I1=ICPR(NUM(NOELEP(INP),IEL))
  533. IF (I1.EQ.0) THEN
  534. CC(INP)=0.D0
  535. ELSE
  536. I2=IPOSP(INP)
  537. CC(INP)=VPO(I1,I2,ICH)
  538. ENDIF
  539. ENDDO
  540. *
  541. * REMPLISSAGE DE LA DIAGONALE
  542. VA=XTMXMU(CC,RE(1,1,IEL),NINCP,ISYME)*COER
  543. XMATR1.RE(ICH,ICH,1)=XMATR1.RE(ICH,ICH,1)+VA
  544. *
  545. *
  546. * REMPLISSAGE DU TRIANGLE SUPERIEUR
  547. * ************************************
  548. * BOUCLE 4 SUR LES CHPOINTS "A GAUCHE"
  549. * ************************************
  550. DO JCH=ICH+1,NBCHP
  551. *
  552. * FABRICATION DU VECTEUR ELEMENTAIRE POUR LA
  553. * MULTIPLICATION A GAUCHE
  554. DO IND=1,NINCD
  555. I1=ICPR(NUM(NOELED(IND),IEL))
  556. IF (I1.EQ.0) THEN
  557. DD(IND)=0.D0
  558. ELSE
  559. I2=IPOSD(IND)
  560. DD(IND)=VPO(I1,I2,JCH)
  561. ENDIF
  562. ENDDO
  563. *
  564. *
  565. * *********************************************
  566. * BOUCLES 5 ET 6 SUR LES LIGNES ET LES COLONNES
  567. * DE LA MATRICE ELEMENTAIRE
  568. * *********************************************
  569. VA=0.D0
  570. *
  571. * MATRICE ELEMENTAIRE SYMETRIQUE
  572. * => ON MULTIPLIE PLUTOT PAR LA MATRICE TRANSPOSEE CAR
  573. * C'EST PLUS PERFORMANT EN FORTRAN
  574. IF (ISYME.EQ.0) THEN
  575. DO IND=1,NINCD
  576. IF (ABS(DD(IND)).GT.XPETIT) THEN
  577. VB=0.D0
  578. DO INP=1,NINCP
  579. VB=VB+RE(INP,IND,IEL)*CC(INP)
  580. ENDDO
  581. VA=VA+DD(IND)*VB
  582. ENDIF
  583. ENDDO
  584. *
  585. * MATRICE ELEMENTAIRE DIAGONALE
  586. ELSEIF (ISYME.EQ.3) THEN
  587. DO IN=1,NINCP
  588. VA=VA+DD(IN)*RE(IN,IN,IEL)*CC(IN)
  589. ENDDO
  590. *
  591. * MATRICE ELEMENTAIRE ANTI-SYMETRIQUE OU QUELCONQUE
  592. ELSE
  593. DO IND=1,NINCD
  594. IF (ABS(DD(IND)).GT.XPETIT) THEN
  595. VB=0.D0
  596. DO INP=1,NINCP
  597. VB=VB+RE(IND,INP,IEL)*CC(INP)
  598. ENDDO
  599. VA=VA+DD(IND)*VB
  600. ENDIF
  601. ENDDO
  602. ENDIF
  603. *
  604. XMATR1.RE(ICH,JCH,1)=XMATR1.RE(ICH,JCH,1)+COER*VA
  605. *
  606. ENDDO
  607. ENDDO
  608. 36 CONTINUE
  609. *
  610. SEGDES,XMATRI,DESCR,MELEME
  611. *
  612. 30 CONTINUE
  613. *
  614. SEGDES,MRIGID
  615. SEGSUP,TRAV2,TCOMP,IHARM,TICPR
  616. *
  617. *
  618. * =================================
  619. * REMPLISSAGE DU TRIANGLE INFERIEUR
  620. * =================================
  621. DO ICH=1,NBCHP
  622. DO JCH=ICH+1,NBCHP
  623. XMATR1.RE(JCH,ICH,1)=XMATR1.RE(ICH,JCH,1)
  624. ENDDO
  625. ENDDO
  626. *
  627. *
  628. *
  629. *
  630. * +---------------------------------------------------------------+
  631. * | |
  632. * | C H A P E A U D U M R I G I D |
  633. * | |
  634. * +---------------------------------------------------------------+
  635. *
  636. NRIGEL=1
  637. SEGINI,MRIGID
  638. IRIG2=MRIGID
  639. MTYMAT='RIGIDITE'
  640. COERIG(1)=DFLO
  641. IRIGEL(1,1)=IPT1
  642. IRIGEL(2,1)=0
  643. IRIGEL(3,1)=DES1
  644. IRIGEL(4,1)=XMATR1
  645. IRIGEL(5,1)=0
  646. IRIGEL(6,1)=0
  647. IRIGEL(7,1)=ISYM1
  648. xmatr1.symre=isym1
  649. SEGDES,XMATR1
  650. ICHOLE=0
  651. IMGEO1=0
  652. IMGEO2=0
  653. IFORIG=IFOUR
  654. ISUPEQ=0
  655. JRCOND=0
  656. JRDEPP=0
  657. JRDEPD=0
  658. JRELIM=0
  659. JRGARD=0
  660. JRTOT=0
  661. IMLAG=0
  662. IPROFO=0
  663. IVECRI=0
  664. SEGDES,MRIGID
  665. *
  666. *
  667. RETURN
  668. *
  669. END
  670. *
  671. *
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  

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