Télécharger resi1.eso

Retour à la liste

Numérotation des lignes :

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

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