Télécharger rigsur.eso

Retour à la liste

Numérotation des lignes :

rigsur
  1. C RIGSUR SOURCE PV090527 26/04/30 21:16:21 12529
  2.  
  3. SUBROUTINE RIGSUR(ISOU ,IPOI6, IMODEL)
  4.  
  5. C---------------------------------------------------------------------*
  6. C subroutine construisant les sousmatrices de rigidité pour les
  7. C sous-modeles de type SURE classiques :
  8. C itypel=48, nformod=259, mfr=1
  9. C---------------------------------------------------------------------*
  10. C---------------------------------------------------------------------*
  11. C *
  12. C ENTREES : *
  13. C ________ *
  14. C *
  15. C IMODEL pointeur sur le sous modele de sure *
  16. C ENTREES/SORTIE : *
  17. C ________ *
  18. C *
  19. C IPOI6 pointeur sur la rigidite construite *
  20. C ISOU compteur des sous matrices de rigidite construite *
  21. C---------------------------------------------------------------------*
  22. c
  23. IMPLICIT REAL*8 (A-H,O-Z)
  24. IMPLICIT INTEGER (I-N)
  25. C
  26.  
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC SMRIGID
  30. C-INC SMINTE
  31. -INC SMMODEL
  32. -INC SMELEME
  33. -INC CCHAMP
  34. -INC CCGEOME
  35. -INC SMCOORD
  36. C
  37.  
  38. C
  39. C Petit tableau des "couleurs" des relations de conformite
  40. DIMENSION LCOLOR(6)
  41. DATA LCOLOR / 1, 3, 6, 10, 16, 24 /
  42. C
  43. MELEME=imamod
  44. SEGACT, MELEME
  45. IDEBUT = LCOLOR(ICOLOR(1)) - 3
  46.  
  47. c récupérations du nom des composantes obligatoire du modele de sure
  48. nomid=IMODEL.lnomid(1)
  49. SEGACT, nomid
  50.  
  51. C**********************************************************************
  52. C Boucle sur les composantes primales obligatoires du sure
  53. C**********************************************************************
  54. ICOMP=0
  55.  
  56. DO 2 ICOMP=1,nomid.lesobl(/2)
  57.  
  58. C====================
  59. c creation d'un maillage avec un premier noeud par lélément
  60. c correspondant à un multiplicateur de lagrange
  61. C====================
  62. NBNN=NUM(/1)+1
  63. NBELEM=NUM(/2)
  64. NBSOUS=0
  65. NBREF=0
  66. SEGINI, IPT4
  67. IPT4.ITYPEL=22
  68. DO 1 J=1,NUM(/2)
  69. ipt4.icolor(j)=icolor(j)
  70. DO 11 I=1,NUM(/1)
  71. IPT4.NUM(I+1,J)=NUM(I,J)
  72. 11 CONTINUE
  73. 1 CONTINUE
  74. C creation n'un nouveau noeud pour supporter chaque multiplicateur de lagrange
  75. segact mcoord*mod
  76. NBPT1= nbpts
  77. NBPTS=NBPT1+(IPT4.NUM(/2))
  78. SEGADJ MCOORD
  79. DO 12 J=1,NUM(/2)
  80. NGLOB=(NBPT1+J-1)*(IDIM+1)
  81. C remplissage des coordonees des nouveux points
  82. DO 13 ID= 1,IDIM
  83. XCOOR(NGLOB+ID)=XCOOR((IPT4.NUM(2,J)-1)*(IDIM+1)+ID)
  84. 13 CONTINUE
  85. IPT4.NUM(1,J) = NBPT1 + J
  86. 12 CONTINUE
  87.  
  88. C====================
  89. C *** SEGMENT XMATRI
  90. C====================
  91. NLIGRD=IPT4.NUM(/1)
  92. NLIGRP=NLIGRD
  93. NELRIG=IPT4.NUM(/2)
  94. rigrel=0
  95. SEGINI, XMATRI
  96. DO 3 I=1,NELRIG
  97. RE(1,2,i)=-1.
  98. RE(2,1,i)=-1.
  99. DO 4 ICAZ=3,NLIGRD
  100. RE(1,ICAZ,i)=XCOEFF(IDEBUT+ICAZ)
  101. RE(ICAZ,1,i)=RE(1,ICAZ,i)
  102. 4 CONTINUE
  103. 3 CONTINUE
  104. C write(*,*) 'COMPOSANTE OBLIGATOIRE DU SURE :'
  105. C write(*,*) (nomid.lesobl(ICOMP))
  106. C write(*,*) 'MATRICE elementaire :'
  107. C DO 5 I=1,NLIGRD
  108. C write(*,*) (RE(i,iou,1), iou=1,NLIGRD)
  109. C 5 CONTINUE
  110.  
  111. C====================
  112. C *** SEGMENT DESCR
  113. C====================
  114.  
  115. NEXIST=0
  116. DO 6 I=1,LNOMDD
  117. IF (NOMDD(I).EQ.nomid.lesobl(ICOMP)) NEXIST = I
  118. 6 CONTINUE
  119.  
  120. IF (NEXIST.EQ.0) THEN
  121. CALL ERREUR(837)
  122. ENDIF
  123.  
  124. SEGINI, DESCR
  125. LISINC(1)='LX '
  126. LISDUA(1)='FLX '
  127. NOELEP(1)=1
  128. NOELED(1)=1
  129. DO 7 I=2,NLIGRD
  130. LISINC(I)=NOMDD(NEXIST)
  131. LISDUA(I)=NOMDU(NEXIST)
  132. NOELEP(i)=i
  133. NOELED(i)=i
  134. 7 CONTINUE
  135.  
  136. C====================
  137. C *** SEGMENT MRIGID
  138. C====================
  139. MRIGID=IPOI6
  140. SEGACT, MRIGID*mod
  141.  
  142. C Ajustement du segment rigidite si plus d'une composante
  143. IF (ICOMP.GT.1) THEN
  144. nrigel=IRIGEL(/2)+1
  145. SEGADJ, MRIGID
  146. isou = isou+1
  147. ENDIF
  148. COERIG(isou)=1.
  149. IRIGEL(1,isou)=IPT4
  150. IRIGEL(2,isou)=0
  151. IRIGEL(3,isou)=DESCR
  152. IRIGEL(4,isou)=XMATRI
  153. IRIGEL(5,isou)=0
  154. IRIGEL(6,isou)=0
  155. IRIGEL(7,isou)=0
  156. IRIGEL(8,isou)=0
  157.  
  158. c SEGDES, MRIGID
  159. SEGDES, DESCR
  160. SEGDES, XMATRI
  161. C**********************************************************************
  162. C FIN Boucle sur les composantes primales obligatoires du sure
  163. C**********************************************************************
  164. 2 CONTINUE
  165.  
  166. RETURN
  167. END
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  

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