Télécharger sore1.eso

Retour à la liste

Numérotation des lignes :

sore1
  1. C SORE1 SOURCE CB215821 25/04/23 21:15:47 12247
  2.  
  3. ************************************************************************
  4. *
  5. * SORE1
  6. * _____
  7. * FONCTION:
  8. * ---------
  9. * CREATION DE LA MATRICE DE CONDUCTIVITE N DIV(GRAD T)
  10. * POUR DES ELMENTS MASSIFS UNIQUEMENT
  11. * GESTION DES SEGMENTS ET TESTS DE COMPATIBILITE
  12. *
  13. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+)=CONTENU DANS UN COMMUN
  14. * -----------
  15. *
  16. * IPMODE (E) POINTEUR SUR LE MMODEL
  17. * IPCHEL (E) POINTEUR SUR LE CHAMP CARACTERISTIQUES (MATER)
  18. * IPCHE4 (E) POINTEUR SUR LE CHAMP FACTEUR DE GRAD(T)
  19. * IPCHP1 (E) POINTEUR SUR LE CHPOINT de TEMPERATURE
  20. * IPRIGI (S) POINTEUR SUR LE SEGMENT MRIGID
  21. *
  22. * VARIABLES:
  23. * ----------
  24. * NBNN NOMBRE DE NOEUDS DANS L'ELEMENT CONSIDERE
  25. * NEF NUMERO DE L'ELEMENT FINI DANS NOMTP
  26. * NBMAIL NOMBRE DE MAILLAGES ELEMENTAIRES
  27. * NBELEM NOMBRE D'ELEMENTS DANS LE MAILLAGE ELEMENTAIRE
  28. *
  29. * AUTEUR, DATE DE CREATION:
  30. * -------------------------
  31. * J.M.BAZE AVRIL 97
  32. *
  33. * LANGAGE:
  34. * --------
  35. * ESOPE + FORTRAN77
  36. ************************************************************************
  37. SUBROUTINE SORE1 (IPMODE,IPCHEL,IPCHE4,IPCHP1,IPRIGI)
  38.  
  39. IMPLICIT INTEGER(I-N)
  40. IMPLICIT REAL*8(A-H,O-Z)
  41.  
  42.  
  43. -INC PPARAM
  44. -INC CCOPTIO
  45. -INC CCHAMP
  46.  
  47. -INC SMRIGID
  48. -INC SMCOORD
  49. -INC SMCHAML
  50. -INC SMELEME
  51. -INC SMMODEL
  52. -INC SMCHPOI
  53.  
  54. CHARACTER*4 MOPRIM,MODUAL
  55. INTEGER NBROBL
  56. INTEGER NBRFAC
  57. INTEGER MODEPL
  58. POINTEUR nomcom.NOMID
  59.  
  60. IPRIGI = 0
  61.  
  62. * Determination du LIEU SUPPORT du MCHAML DE CARACTERISTIQUES
  63. CALL QUESUP(0,IPCHEL,0,0,iretou,ISUPCA)
  64. IF (ISUPCA.GT.900 .OR. IERR.NE.0) RETURN
  65. * Si le MCHAML est appuye aux NOEUDS ou au GRAVITE, on change le SUPPORT
  66. * pour les points de GAUSS.
  67. * Attention pour l'instant, on met en ISUPCA = 6, mais il faudrait
  68. * distinguer les formulations et les supports...
  69. IF (ISUPCA.EQ.1 .OR. ISUPCA.EQ.2) THEN
  70. * On change plus bas le support pour 6...
  71. ELSE
  72. IPCHE1 = IPCHEL
  73. IF (ISUPCA.NE.6) THEN
  74. write(ioimp,*) 'SORE1 : SUPPORT ISUPCA = ',ISUPCA
  75. ENDIF
  76. ENDIF
  77. IF (ISUPCA.NE.6) THEN
  78. ISUPCA = 6
  79. CALL CHASUP(IPMODE,IPCHEL,IPCHE1,iretou,ISUPCA)
  80. IF (iretou.NE.0) THEN
  81. CALL ERREUR(iretou)
  82. RETURN
  83. ENDIF
  84. ENDIF
  85.  
  86. * CHPOINT de TEMPERATURE ---> MCHAML AUX NOEUDS
  87. CALL CHAME1(0,IPMODE,IPCHP1,' ',IPCHE2,1)
  88. IF (IERR.NE.0) RETURN
  89. ICHCAR = 0
  90.  
  91. * GRADIENT de TEMPERATURE
  92. NBROBL=1
  93. NBRFAC=0
  94. SEGINI nomcom
  95. nomcom.LESOBL(1)='T '
  96. MODEPL=nomcom
  97.  
  98. CALL GRAD1(IPMODE,MODEPL,IPCHE2,ICHCAR,IPCHE3,iretou)
  99. SEGSUP NOMCOM
  100. IF (iretou.NE.1 .OR. IERR.NE.0) RETURN
  101.  
  102. * VERIFICATION DES SUPPORTS
  103. *
  104. MCHELM = IPCHE1
  105. SEGACT,MCHELM
  106. NBMAIC=IMACHE(/1)
  107. c* SEGDES MCHELM
  108.  
  109. MMODEL = IPMODE
  110. SEGACT,MMODEL
  111. NSOUS = mmodel.KMODEL(/1)
  112. * IL MANQUE LES CARACTERISTIQUES D'UNE OU PLUSIEURS PARTIES
  113. * DU MODELE
  114. IF (NSOUS.GT.NBMAIC) THEN
  115. CALL ERREUR(404)
  116. SEGDES,MMODEL
  117. GOTO 900
  118. ENDIF
  119. *
  120. * INITIALISATION DU CHAPEAU DE L'OBJET RIGIDITE
  121. *
  122. NRIGEL = NSOUS
  123. SEGINI,MRIGID
  124. mrigid.ICHOLE = 0
  125. mrigid.IMGEO1 = 0
  126. mrigid.IMGEO2 = 0
  127. mrigid.IFORIG = IFOUR
  128. mrigid.ISUPEQ = 0
  129. mrigid.MTYMAT = 'RIGIDITE'
  130. IPRIGI = MRIGID
  131. *
  132. * BOUCLE SUR LES MAILLAGES ELEMENTAIRES,ZONE IMAIL
  133.  
  134. DO 50 isous = 1, NSOUS
  135.  
  136. IMODEL=KMODEL(isous)
  137. SEGACT,IMODEL
  138.  
  139. NEF = imodel.NEFMOD
  140.  
  141. MELEME = imodel.IMAMOD
  142. SEGACT,MELEME
  143. NBNN = meleme.NUM(/1)
  144. NBELEM = meleme.NUM(/2)
  145.  
  146. C Recuperation des Noms de composante PRIMALES et DUALES
  147. nomid = imodel.LNOMID(1)
  148. SEGACT,nomid
  149. MOPRIM = nomid.LESOBL(1)
  150. SEGDES,nomid
  151. nomid = imodel.LNOMID(2)
  152. SEGACT,nomid
  153. MODUAL = nomid.LESOBL(1)
  154. SEGDES,nomid
  155.  
  156. * REMPLIR LE SEGMENT DESCRIPTEUR DE L'OBJET RIGIDITE
  157. *
  158. NLIGRP = NBNN
  159. NLIGRD = NBNN
  160. SEGINI,DESCR
  161. DO IB = 1, NLIGRP
  162. LISINC(IB) = MOPRIM
  163. LISDUA(IB) = MODUAL
  164. NOELEP(IB) = IB
  165. NOELED(IB) = IB
  166. ENDDO
  167. SEGDES,DESCR
  168. IDESCR = DESCR
  169.  
  170. NELRIG = NBELEM
  171. SEGINI,xMATRI
  172. xMATRI.SYMRE = 2
  173.  
  174. mrigid.COERIG(isous) = 1.D0
  175. mrigid.IRIGEL(1,isous) = IMAMOD
  176. mrigid.IRIGEL(2,isous) = 0
  177. mrigid.IRIGEL(3,isous) = IDESCR
  178. mrigid.IRIGEL(4,isous) = xMATRI
  179. mrigid.IRIGEL(5,isous) = 0
  180. mrigid.IRIGEL(6,isous) = 0
  181. mrigid.IRIGEL(7,isous) = 2
  182. mrigid.IRIGEL(8,isous) = 0
  183.  
  184. CALL SORE2(NEF,isous,IMODEL,IPCHE1,IPCHE3,IPCHE4, IPRIGI)
  185.  
  186. SEGDES,xMATRI
  187. SEGDES,MELEME
  188. IF (IERR.NE.0) GOTO 900
  189.  
  190. 50 CONTINUE
  191.  
  192. 900 CONTINUE
  193. DO isous = 1, NSOUS
  194. IMODEL = mmodel.KMODEL(isous)
  195. SEGDES,IMODEL
  196. ENDDO
  197. SEGDES,MMODEL
  198. IF (IPRIGI.NE.0) THEN
  199. SEGDES,MRIGID
  200. ELSE
  201. SEGSUP,MRIGID
  202. ENDIF
  203.  
  204. MCHELM = IPCHE3
  205. SEGSUP,MCHELM
  206.  
  207. RETURN
  208. END
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  

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