Télécharger resi1.eso

Retour à la liste

Numérotation des lignes :

resi1
  1. C RESI1 SOURCE CB215821 25/04/23 21:15:38 12247
  2.  
  3. ************************************************************************
  4. *
  5. * R E S I 1
  6. * ---------
  7. *
  8. * FONCTION:
  9. * ---------
  10. * CREATION DE LA MATRICE DE RESISTANCE
  11. * GESTION DES SEGMENTS ET TESTS DE COMPATIBILITE
  12. *
  13. * PARAMETRES: (E)=ENTREE (S)=SORTIE
  14. * -----------
  15. *
  16. * IPMODE (E) POINTEUR SUR LE SEGMENT MMODEL (ACTIF EN E/S)
  17. * IPCHEL (E) POINTEUR SUR LE SEGMENT MCHELM (ACTIF EN E/S)
  18. * IPRIGI (S) POINTEUR SUR LE SEGMENT MRIGID (NOUVEAU EN S)
  19. *
  20. ************************************************************************
  21.  
  22. SUBROUTINE RESI1(IPMODE,IPCHEL,IPRIGI)
  23.  
  24. IMPLICIT INTEGER(I-N)
  25. IMPLICIT REAL*8 (A-H,O-Z)
  26.  
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC CCHAMP
  30.  
  31. -INC SMRIGID
  32. -INC SMCOORD
  33. -INC SMCHAML
  34. -INC SMELEME
  35. -INC SMMODEL
  36.  
  37. LOGICAL OK
  38.  
  39. IPRIGI = 0
  40. IPCHE1 = 0
  41. IPMOD1 = 0
  42. *
  43. * VERIFICATION DU LIEU SUPPORT DU CHAMELEM DE CARACTERISTIQUES
  44. *
  45. CALL QUESUP(IPMODE,IPCHEL,2,0,ISUP,iretca)
  46. IF (ISUP.GT.1) RETURN
  47. *
  48. * SI LE CHAMELEM EST APPUYE AUX NOEUDS, ON CHANGE LE SUPPORT
  49. * POUR LES CENTRES DE GRAVITE
  50. *
  51. IF (ISUP.EQ.1) THEN
  52. CALL CHASUP(IPMODE,IPCHEL,IPCHE1,iret,2)
  53. IF (iret.NE.0) THEN
  54. CALL ERREUR(iret)
  55. RETURN
  56. ENDIF
  57. ELSE
  58. IPCHE1 = IPCHEL
  59. ENDIF
  60. *
  61. * ANALYSE DU MMODEL
  62. *
  63. MMODEL = IPMODE
  64. NBMAIL = mmodel.KMODEL(/1)
  65.  
  66. N1 = NBMAIL
  67. SEGINI,mmode1
  68. IPMOD1 = mmode1
  69.  
  70. N1 = 0
  71. DO imail = 1, NBMAIL
  72. IMODEL = mmodel.KMODEL(imail)
  73. NF1 = imodel.FORMOD(/2)
  74. CALL PLACE(imodel.FORMOD,NF1,IF1,'MAGNETODYNAMIQUE')
  75. OK = .FALSE.
  76. IF (IF1.NE.0) THEN
  77. NEF = imodel.NEFMOD
  78. C-------- CAS DE L'ELEMENT ROT3
  79. IF (NEF.EQ.128) THEN
  80. OK = .TRUE.
  81. ELSE
  82. CALL ERREUR(19)
  83. ENDIF
  84. ENDIF
  85. IF (OK) THEN
  86. N1 = N1 + 1
  87. mmode1.KMODEL(N1) = IMODEL
  88. ENDIF
  89. ENDDO
  90. IF (N1.EQ.0) CALL ERREUR(251)
  91. IF (IERR.NE.0) GOTO 99
  92. NBMAIL = N1
  93. *
  94. * INITIALISATION DU CHAPEAU DE L'OBJET RIGIDITE
  95. *
  96. NRIGEL = NBMAIL
  97. SEGINI,MRIGID
  98. mrigid.MTYMAT = 'RIGIDITE'
  99. mrigid.IFORIG = IFOUR
  100. *
  101. * BOUCLE SUR LES MAILLAGES ELEMENTAIRES, ZONE imail
  102. *
  103. DO imail = 1, NBMAIL
  104. *
  105. IMODEL = mmode1.KMODEL(imail)
  106. NEF = imodel.NEFMOD
  107. MELEME = imodel.IMAMOD
  108. NBNN = meleme.NUM(/1)
  109. NBELEM = meleme.NUM(/2)
  110.  
  111. * REMPLIR LE SEGMENT DESCRIPTEUR DE L'OBJET RIGIDITE
  112. *
  113. CALL RESI2(NEF,NBNN,IDESCR)
  114. descr = IDESCR
  115.  
  116. NLIGRP = descr.noelep(/1)
  117. NLIGRD = descr.noeled(/1)
  118. NELRIG = NBELEM
  119.  
  120. SEGINI,xMATRI
  121. IPMATR = xMATRI
  122.  
  123. CALL ROT3R(NEF,MELEME,IMODEL,IPCHE1,IPMATR)
  124. IF (IERR.NE.0) GOTO 99
  125.  
  126. COERIG(imail) = 1.D0
  127. IRIGEL(1,imail) = MELEME
  128. IRIGEL(2,imail) = 0
  129. IRIGEL(3,imail) = IDESCR
  130. IRIGEL(4,imail) = IPMATR
  131. IRIGEL(5,imail) = 0
  132. IRIGEL(6,imail) = 0
  133. IRIGEL(7,imail) = 0
  134. IRIGEL(8,imail) = 0
  135.  
  136. SEGDES,descr,xMATRI
  137.  
  138. ENDDO
  139.  
  140. IPRIGI = MRIGID
  141.  
  142. 99 CONTINUE
  143. IF (IPCHE1.NE.IPCHEL) THEN
  144. mchelm = IPCHE1
  145. IF (mchelm.NE.0) SEGSUP,mchelm
  146. ENDIF
  147. IF (IPMOD1.NE.0) THEN
  148. mmode1 = IPMOD1
  149. SEGSUP,mmode1
  150. ENDIF
  151. cc IF (IPRIGI.EQ.0) SEGSUP,mrigid
  152.  
  153. c return
  154. END
  155.  
  156.  
  157.  
  158.  

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