Télécharger chamas.eso

Retour à la liste

Numérotation des lignes :

  1. C CHAMAS SOURCE CB215821 19/02/25 21:15:05 10119
  2.  
  3. C=======================================================================
  4. C= C H A M A S =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul des flux equivalents a des sources volumiques dans le cas =
  10. C= des elements MASSIFs (1D, 2D, 3D). =
  11. C= =
  12. C= Parametres : (E)=Entree (S)=Sortie =
  13. C= ------------ =
  14. C= IPMODE (E) Pointeur du MMODEL a traiter =
  15. C= IFORMU (E) Entier indiquant la formulation du modele a traiter =
  16. C= IPCHSO (E) Pointeur du MCHAML de sources =
  17. C= ISUPCH (E) Support des champs en entree =
  18. C= NOMDUA (E) Nom de la composante du champ de flux equivalents =
  19. C= IPCHAL (S) Pointeur sur le champ des flux equivalents =
  20. C=======================================================================
  21.  
  22. SUBROUTINE CHAMAS (IPMODE,IFORMU, IPCHSO,ISUPCH, NOMDUA, IPCHAL)
  23.  
  24. IMPLICIT INTEGER(I-N)
  25. IMPLICIT REAL*8 (A-H,O-Z)
  26.  
  27. -INC CCOPTIO
  28. -INC SMCHAML
  29. -INC SMMODEL
  30.  
  31. SEGMENT INFO
  32. INTEGER INFELL(JG)
  33. ENDSEGMENT
  34.  
  35. CHARACTER*(*) NOMDUA
  36.  
  37. MMODEL = IPMODE
  38. C* SEGACT,MMODEL <- Actif en E/S (non modifie)
  39. NSOU=KMODEL(/1)
  40. C =====
  41. MCHELM = IPCHAL
  42. c* SEGACT,MCHELM <- Actif en E/S et modifiable
  43. c* NSZC = MCHELM.IMACHE(/1) <- On a ici : NSZC = NSOU
  44. C =====
  45. MCHEL1 = IPCHSO
  46. c* SEGACT,MCHEL1 <- Actif en E/S (non modifie)
  47. NSZ1 = MCHEL1.IMACHE(/1)
  48.  
  49. C 3 - BOUCLE SUR LES ZONES ELEMENTAIRES DU MODELE (ISOU)
  50. C ========================================================
  51. DO 100 ISOU = 1, NSOU
  52. C =====
  53. C 3.1 - Modele elementaire ISOU
  54. C =====
  55. IMODEL = mmodel.KMODEL(ISOU)
  56. ** SEGACT,IMODEL
  57. C =====
  58. C 3.2 - Recherche dans le MCHAML des sources (IPCHSO) du maillage
  59. C (IMAMOD) associe au modele elementaire iSou, puis recuperation
  60. C du MCHAML elementaire de sources associe (IPSONO)
  61. C =====
  62. IPSONO = 0
  63. DO is = 1, NSZ1
  64. IF (MCHEL1.IMACHE(is).EQ.imodel.IMAMOD .AND.
  65. & MCHEL1.CONCHE(is).EQ.imodel.CONMOD) THEN
  66. mchaml = MCHEL1.ICHAML(is)
  67. SEGACT,mchaml
  68. c il faudrait chercher la composante si le champ en a plus qu'une.
  69. IPSONO = mchaml.IELVAL(1)
  70. SEGDES,mchaml
  71. GOTO 10
  72. ENDIF
  73. ENDDO
  74. 10 CONTINUE
  75. IF (IPSONO.EQ.0) GOTO 100
  76. C =====
  77. C 3.3 - Recuperation d'informations sur l'element fini du modele
  78. C elementaire iSou (NEF)
  79. C =====
  80. NEF = imodel.NEFMOD
  81. IPGEO = imodel.IMAMOD
  82. IF (IFORMU.EQ.1 .OR. IFORMU.EQ.2 .OR. IFORMU.EQ.3) THEN
  83. C* A ce jour : diffusion = thermique (en attendant retour diffusion = mecanique)
  84. C* IF (IFORMU.EQ.1 .OR. IFORMU.EQ.2) THEN
  85. IF (ISUPCH.EQ.6) THEN
  86. CALL TSHAPE(NEF,'GAUSS',IPINTE)
  87. ELSE
  88. write(ioimp,*) 'CHAMAS : inchorence IFORMU ISUPCH'
  89. CALL ERREUR(5)
  90. RETURN
  91. ENDIF
  92. ELSE
  93. IF (imodel.INFMOD(/1).LT.2+ISUPCH) THEN
  94. CALL ELQUOI(NEF,0,ISUPCH,ipinf,imodel)
  95. IF (IERR.NE.0) RETURN
  96. info = ipinf
  97. IPINTE = info.INFELL(11)
  98. SEGSUP,info
  99. ELSE
  100. IPINTE = imodel.INFMOD(2+ISUPCH)
  101. ENDIF
  102. ENDIF
  103. C =====
  104. C 3.4 - Calcul des flux nodaux equivalents (segment MELVAL)
  105. C =====
  106. IF (IDIM.EQ.3) THEN
  107. CALL CHAMA3(IPSONO,IPGEO,IPINTE,IPCHEQ)
  108. ELSE IF (IDIM.EQ.2) THEN
  109. CALL CHAMA2(IPSONO,IPGEO,IPINTE,IPCHEQ)
  110. ELSE IF (IDIM.EQ.1) THEN
  111. CALL CHAMA1(IPSONO,IPGEO,IPINTE,IPCHEQ)
  112. ENDIF
  113. IF (IERR.NE.0) GOTO 100
  114. C =====
  115. C 3.5 - Initialisation du MCHAML des flux de chaleur nodaux equivalents
  116. C (MCHAML) associe au modele elementaire iSou (maillage IMAMOD)
  117. C Remplissage des donnees associees a MCHAML dans MCHELM (global)
  118. C =====
  119. N2 = 1
  120. SEGINI,MCHAML
  121. IF(NOMDUA .NE. ' ')THEN
  122. mchaml.NOMCHE(1) = NOMDUA
  123. ELSE
  124. NOMID=LNOMID(2)
  125. SEGACT,NOMID
  126. NBROBL=NOMID.LESOBL(/1)
  127. IF(NBROBL .GT. 1)THEN
  128. CALL ERREUR(21)
  129. RETURN
  130. ENDIF
  131. mchaml.NOMCHE(1) = NOMID.LESOBL(1)
  132. ENDIF
  133. mchaml.TYPCHE(1) = 'REAL*8'
  134. mchaml.IELVAL(1) = IPCHEQ
  135. SEGACT,MCHAML*NOMOD
  136.  
  137. mchelm.CONCHE(ISOU) = imodel.CONMOD
  138. mchelm.IMACHE(ISOU) = IPGEO
  139. mchelm.ICHAML(ISOU) = MCHAML
  140. mchelm.INFCHE(ISOU,3) = NIFOUR
  141. mchelm.INFCHE(ISOU,6) = 1
  142.  
  143. C===
  144. 100 CONTINUE
  145. C===
  146. C Fin de la boucle sur les sous-modeles elementaires
  147.  
  148. END
  149.  
  150.  

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