Télécharger rigsur.eso

Retour à la liste

Numérotation des lignes :

rigsur
  1. C RIGSUR SOURCE CB215821 24/04/12 21:17:11 11897
  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. SEGINI, XMATRI
  95. DO 3 I=1,NELRIG
  96. RE(1,2,i)=-1.
  97. RE(2,1,i)=-1.
  98. DO 4 ICAZ=3,NLIGRD
  99. RE(1,ICAZ,i)=XCOEFF(IDEBUT+ICAZ)
  100. RE(ICAZ,1,i)=RE(1,ICAZ,i)
  101. 4 CONTINUE
  102. 3 CONTINUE
  103. C write(*,*) 'COMPOSANTE OBLIGATOIRE DU SURE :'
  104. C write(*,*) (nomid.lesobl(ICOMP))
  105. C write(*,*) 'MATRICE elementaire :'
  106. C DO 5 I=1,NLIGRD
  107. C write(*,*) (RE(i,iou,1), iou=1,NLIGRD)
  108. C 5 CONTINUE
  109.  
  110. C====================
  111. C *** SEGMENT DESCR
  112. C====================
  113.  
  114. NEXIST=0
  115. DO 6 I=1,LNOMDD
  116. IF (NOMDD(I).EQ.nomid.lesobl(ICOMP)) NEXIST = I
  117. 6 CONTINUE
  118.  
  119. IF (NEXIST.EQ.0) THEN
  120. CALL ERREUR(837)
  121. ENDIF
  122.  
  123. SEGINI, DESCR
  124. LISINC(1)='LX '
  125. LISDUA(1)='FLX '
  126. NOELEP(1)=1
  127. NOELED(1)=1
  128. DO 7 I=2,NLIGRD
  129. LISINC(I)=NOMDD(NEXIST)
  130. LISDUA(I)=NOMDU(NEXIST)
  131. NOELEP(i)=i
  132. NOELED(i)=i
  133. 7 CONTINUE
  134.  
  135. C====================
  136. C *** SEGMENT MRIGID
  137. C====================
  138. MRIGID=IPOI6
  139. SEGACT, MRIGID*mod
  140.  
  141. C Ajustement du segment rigidite si plus d'une composante
  142. IF (ICOMP.GT.1) THEN
  143. nrigel=IRIGEL(/2)+1
  144. SEGADJ, MRIGID
  145. isou = isou+1
  146. ENDIF
  147. COERIG(isou)=1.
  148. IRIGEL(1,isou)=IPT4
  149. IRIGEL(2,isou)=0
  150. IRIGEL(3,isou)=DESCR
  151. IRIGEL(4,isou)=XMATRI
  152. IRIGEL(5,isou)=0
  153. IRIGEL(6,isou)=0
  154. IRIGEL(7,isou)=0
  155. IRIGEL(8,isou)=0
  156.  
  157. c SEGDES, MRIGID
  158. SEGDES, DESCR
  159. SEGDES, XMATRI
  160. C**********************************************************************
  161. C FIN Boucle sur les composantes primales obligatoires du sure
  162. C**********************************************************************
  163. 2 CONTINUE
  164.  
  165. RETURN
  166. END
  167.  
  168.  
  169.  
  170.  

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