Télécharger tumu.eso

Retour à la liste

Numérotation des lignes :

tumu
  1. C TUMU SOURCE PV090527 26/04/30 21:16:45 12529
  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. rigrel=0
  415. SEGINI,XMATR1
  416. *
  417. ISYM1=IRIGEL(7,1)
  418. *
  419. * (BOUCLE 1 SUR LES SOUS-MATRICES)
  420. DO 30 IRI=1,NRIGEL
  421. MELEME=IRIGEL(1,IRI)
  422. SEGACT,MELEME
  423. IF (ITYPEL.EQ.22) GOTO 30
  424. *
  425. DESCR=IRIGEL(3,IRI)
  426. SEGACT,DESCR
  427. NINCP=LISINC(/2)
  428. NINCD=LISDUA(/2)
  429. * ON VERIFIE QUE LA MATRICE EST CARREE
  430. IF (NINCP.NE.NINCD) THEN
  431. CALL ERREUR(21)
  432. RETURN
  433. ENDIF
  434. * * ON VERIFIE LA CORRESPONDANCE ENTRE LA LIGNE ET LA COLONNE D'UN
  435. * * NOEUD DONNE
  436. * DO K=1,NINCP
  437. * IF (NOELED(K).NE.NOELEP(K)) THEN
  438. * CALL ERREUR(21)
  439. * RETURN
  440. * ENDIF
  441. * ENDDO
  442. *
  443. NUHAR=IRIGEL(5,IRI)
  444. *
  445. ISYME=IRIGEL(7,IRI)
  446. IF (ISYME.NE.ISYM1) ISYM1=2
  447. *
  448. *
  449. * =========================================================
  450. * CORRESPONDANCE ENTRE LES INCONNUES PRIMALES DE LA MATRICE
  451. * ELEMENTAIRE ET LES INCONNUES "GLOBALES" DU SEGMENT TINCO
  452. * (SELON LESQUELLES SONT ORDONNES TOUS LES VPOCHA)
  453. * =========================================================
  454. *
  455. DO 31 IN1=1,NINCP
  456. MOCOMP=LISINC(IN1)
  457. DO 32 IN2=1,NBINC
  458. IF (MOCOMP.NE.MCOMP(IN2)) GOTO 32
  459. IF (NUHAR .EQ.IHARM(IN2)) THEN
  460. IPOSP(IN1)=IN2
  461. GOTO 31
  462. ENDIF
  463. 32 CONTINUE
  464. 31 CONTINUE
  465. *
  466. *
  467. * ========================================================
  468. * CORRESPONDANCE ENTRE LES INCONNUES DUALES DE LA MATRICE
  469. * ELEMENTAIRE ET LES INCONNUES "GLOBALES" DU SEGMENT TINCO
  470. * L'ASSOCIATION EST FAITE GRACE AUX LISTES DEFINIES DANS
  471. * L'INCLUDE CCHAMP
  472. * ========================================================
  473. *
  474. DO 33 IN1=1,NINCD
  475. MOCOMP=LISDUA(IN1)
  476.  
  477. * ON CHERCHE LA PRIMALE ASSOCIEE A LA DUALE NUMERO IN1
  478. DO IC1=1,LNOMDU
  479. IF (MOCOMP.EQ.NOMDU(IC1)) GOTO 34
  480. ENDDO
  481.  
  482. * ERREUR : COMPOSANTE NON REFERENCEE DANS CCHAMP
  483. MOTERR=MOCOMP
  484. CALL ERREUR(108)
  485. RETURN
  486.  
  487. 34 CONTINUE
  488. MOCOMP=NOMDD(IC1)
  489. DO 35 IN2=1,NBINC
  490. IF (MOCOMP.NE.MCOMP(IN2)) GOTO 35
  491. IF (NUHAR .EQ.IHARM(IN2)) THEN
  492. IPOSD(IN1)=IN2
  493. GOTO 33
  494. ENDIF
  495. 35 CONTINUE
  496.  
  497. CALL ERREUR(21)
  498. RETURN
  499. 33 CONTINUE
  500. *
  501. *
  502. * ================================================
  503. * CALCUL DES PRODUITS MATRICE/VECTEUR ELEMENTAIRES
  504. * ================================================
  505. *
  506. NNO=NUM(/1)
  507. NEL=NUM(/2)
  508. COER=COERIG(IRI)
  509. XMATRI=IRIGEL(4,IRI)
  510. SEGACT,XMATRI
  511. *
  512. * ********************************************
  513. * BOUCLE 2 SUR LES ELEMENTS DE LA SOUS-MATRICE
  514. * ********************************************
  515. DO 36 IEL=1,NEL
  516. *
  517. * ON VERIFIE QUE LA RIGIDITE ELEMENTAIRE POSSEDE UN SUPPORT
  518. * GEOMETRIQUE COMPATIBLE AVEC LE LISTCHPO
  519. DO INO=1,NNO
  520. IF (ICPR(NUM(INO,IEL)).NE.0) GOTO 37
  521. ENDDO
  522. GOTO 36
  523. 37 CONTINUE
  524. *
  525. * ************************************
  526. * BOUCLE 3 SUR LES CHPOINTS "A DROITE"
  527. * ************************************
  528. DO ICH=1,NBCHP
  529. *
  530. * FABRICATION DU VECTEUR ELEMENTAIRE POUR LA
  531. * MULTIPLICATION A DROITE
  532. DO INP=1,NINCP
  533. I1=ICPR(NUM(NOELEP(INP),IEL))
  534. IF (I1.EQ.0) THEN
  535. CC(INP)=0.D0
  536. ELSE
  537. I2=IPOSP(INP)
  538. CC(INP)=VPO(I1,I2,ICH)
  539. ENDIF
  540. ENDDO
  541. *
  542. * REMPLISSAGE DE LA DIAGONALE
  543. VA=XTMXMU(CC,RE(1,1,IEL),NINCP,ISYME)*COER
  544. XMATR1.RE(ICH,ICH,1)=XMATR1.RE(ICH,ICH,1)+VA
  545. *
  546. *
  547. * REMPLISSAGE DU TRIANGLE SUPERIEUR
  548. * ************************************
  549. * BOUCLE 4 SUR LES CHPOINTS "A GAUCHE"
  550. * ************************************
  551. DO JCH=ICH+1,NBCHP
  552. *
  553. * FABRICATION DU VECTEUR ELEMENTAIRE POUR LA
  554. * MULTIPLICATION A GAUCHE
  555. DO IND=1,NINCD
  556. I1=ICPR(NUM(NOELED(IND),IEL))
  557. IF (I1.EQ.0) THEN
  558. DD(IND)=0.D0
  559. ELSE
  560. I2=IPOSD(IND)
  561. DD(IND)=VPO(I1,I2,JCH)
  562. ENDIF
  563. ENDDO
  564. *
  565. *
  566. * *********************************************
  567. * BOUCLES 5 ET 6 SUR LES LIGNES ET LES COLONNES
  568. * DE LA MATRICE ELEMENTAIRE
  569. * *********************************************
  570. VA=0.D0
  571. *
  572. * MATRICE ELEMENTAIRE SYMETRIQUE
  573. * => ON MULTIPLIE PLUTOT PAR LA MATRICE TRANSPOSEE CAR
  574. * C'EST PLUS PERFORMANT EN FORTRAN
  575. IF (ISYME.EQ.0) THEN
  576. DO IND=1,NINCD
  577. IF (ABS(DD(IND)).GT.XPETIT) THEN
  578. VB=0.D0
  579. DO INP=1,NINCP
  580. VB=VB+RE(INP,IND,IEL)*CC(INP)
  581. ENDDO
  582. VA=VA+DD(IND)*VB
  583. ENDIF
  584. ENDDO
  585. *
  586. * MATRICE ELEMENTAIRE DIAGONALE
  587. ELSEIF (ISYME.EQ.3) THEN
  588. DO IN=1,NINCP
  589. VA=VA+DD(IN)*RE(IN,IN,IEL)*CC(IN)
  590. ENDDO
  591. *
  592. * MATRICE ELEMENTAIRE ANTI-SYMETRIQUE OU QUELCONQUE
  593. ELSE
  594. DO IND=1,NINCD
  595. IF (ABS(DD(IND)).GT.XPETIT) THEN
  596. VB=0.D0
  597. DO INP=1,NINCP
  598. VB=VB+RE(IND,INP,IEL)*CC(INP)
  599. ENDDO
  600. VA=VA+DD(IND)*VB
  601. ENDIF
  602. ENDDO
  603. ENDIF
  604. *
  605. XMATR1.RE(ICH,JCH,1)=XMATR1.RE(ICH,JCH,1)+COER*VA
  606. *
  607. ENDDO
  608. ENDDO
  609. 36 CONTINUE
  610. *
  611. SEGDES,XMATRI,DESCR,MELEME
  612. *
  613. 30 CONTINUE
  614. *
  615. SEGDES,MRIGID
  616. SEGSUP,TRAV2,TCOMP,IHARM,TICPR
  617. *
  618. *
  619. * =================================
  620. * REMPLISSAGE DU TRIANGLE INFERIEUR
  621. * =================================
  622. DO ICH=1,NBCHP
  623. DO JCH=ICH+1,NBCHP
  624. XMATR1.RE(JCH,ICH,1)=XMATR1.RE(ICH,JCH,1)
  625. ENDDO
  626. ENDDO
  627. *
  628. *
  629. *
  630. *
  631. * +---------------------------------------------------------------+
  632. * | |
  633. * | C H A P E A U D U M R I G I D |
  634. * | |
  635. * +---------------------------------------------------------------+
  636. *
  637. NRIGEL=1
  638. SEGINI,MRIGID
  639. IRIG2=MRIGID
  640. MTYMAT='RIGIDITE'
  641. COERIG(1)=DFLO
  642. IRIGEL(1,1)=IPT1
  643. IRIGEL(2,1)=0
  644. IRIGEL(3,1)=DES1
  645. IRIGEL(4,1)=XMATR1
  646. IRIGEL(5,1)=0
  647. IRIGEL(6,1)=0
  648. IRIGEL(7,1)=ISYM1
  649. xmatr1.symre=isym1
  650. SEGDES,XMATR1
  651. ICHOLE=0
  652. IMGEO1=0
  653. IMGEO2=0
  654. IFORIG=IFOUR
  655. ISUPEQ=0
  656. JRCOND=0
  657. JRDEPP=0
  658. JRDEPD=0
  659. JRELIM=0
  660. JRGARD=0
  661. JRTOT=0
  662. IMLAG=0
  663. IPROFO=0
  664. IVECRI=0
  665. SEGDES,MRIGID
  666. *
  667. *
  668. RETURN
  669. *
  670. END
  671. *
  672. *
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  

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