Télécharger chamas.eso

Retour à la liste

Numérotation des lignes :

chamas
  1. C CHAMAS SOURCE MB234859 25/09/08 21:15:09 12358
  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= IPCHAL (S) Pointeur sur le champ des flux equivalents =
  19. C=======================================================================
  20.  
  21. SUBROUTINE CHAMAS (IPMODE,IFORMU, IPCHSO,ISUPCH, IPCHAL)
  22.  
  23. IMPLICIT INTEGER(I-N)
  24. IMPLICIT REAL*8 (A-H,O-Z)
  25.  
  26.  
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC SMCHAML
  30. -INC SMMODEL
  31. -INC CCREEL
  32.  
  33. MMODEL = IPMODE
  34. NSOU=KMODEL(/1)
  35. MCHELM = IPCHAL
  36. MCHEL1 = IPCHSO
  37. NSZ1 = MCHEL1.IMACHE(/1)
  38.  
  39. C 3 - BOUCLE SUR LES ZONES ELEMENTAIRES DU MODELE (ISOU)
  40. C ========================================================
  41. C IQGAU : indicateur modele source gaussienne
  42. IQGAU = 0
  43. DO 100 ISOU = 1, NSOU
  44. C =====
  45. C 3.1 - Modele elementaire ISOU
  46. C =====
  47. IMODEL = mmodel.KMODEL(ISOU)
  48. C =====
  49. C 3.2 - Recherche dans le MCHAML des sources (IPCHSO) du maillage
  50. C (IMAMOD) associe au modele elementaire iSou, puis recuperation
  51. C du MCHAML elementaire de sources associe (IPSONO)
  52. C =====
  53. IS0 = 0
  54. IPCHAM = 0
  55. IPSONO = 0
  56. DO is = 1, NSZ1
  57. IF (MCHEL1.IMACHE(is).EQ.imodel.IMAMOD .AND.
  58. & MCHEL1.CONCHE(is).EQ.imodel.CONMOD) THEN
  59. IS0 = IS
  60. IPCHAM = MCHEL1.ICHAML(is)
  61. mchaml = IPCHAM
  62. c il faudrait chercher la composante si le champ en a plus qu'une.
  63. IPSONO = mchaml.IELVAL(1)
  64. GOTO 10
  65. ENDIF
  66. ENDDO
  67. 10 CONTINUE
  68. IF (IPSONO.EQ.0) GOTO 100
  69. C
  70. C =====
  71. C 3.2.x FORMULATION SOURCE
  72. C Construction du MELVAL des valeurs de la distribution
  73. C de chaleur specifiee par le modele
  74. C =====
  75. IK1 = 0
  76. NEF = imodel.NEFMOD
  77. IPGEO = imodel.IMAMOD
  78. IF (IMODEL.MATMOD(1).EQ.'SOURCE ') THEN
  79. C
  80. NMAT = IMODEL.MATMOD(/2)
  81. C Source "sans rien" => rien a faire !
  82. IF (NMAT.EQ.1) THEN
  83. C
  84. C Source GAUSSIENNE
  85. ELSEIF (IMODEL.MATMOD(2).EQ.'GAUSSIENNE') THEN
  86. IK1 = 1
  87. IQGAU = 1
  88. IF (IMODEL.MATMOD(3).EQ.'ELLIPTIQUE') IK1 = 2
  89. IF (IMODEL.MATMOD(3).EQ.'ELARGIE ') IK1 = 3
  90. IF (ISUPCH.NE.6) THEN
  91. MOTERR(1:8)='MCHAML'
  92. CALL ERREUR(981)
  93. RETURN
  94. ENDIF
  95. CALL TSHAPE(NEF,'GAUSS',IPINTE)
  96. CALL CHAGA1(IPCHAM,IPGEO,IPINTE,IK1,IPSON1,XQT0)
  97. IF (IERR.NE.0) RETURN
  98. IPSONO=IPSON1
  99. C
  100. C Sinon ERREUR 251
  101. ELSE
  102. CALL ERREUR(251)
  103. RETURN
  104. ENDIF
  105. ENDIF
  106. C
  107. C =====
  108. C 3.3 - Recuperation d'informations sur l'element fini du modele
  109. C elementaire iSou (NEF)
  110. C =====
  111. IF (IFORMU.EQ.1 .OR. IFORMU.EQ.2 .OR. IFORMU.EQ.3) THEN
  112. C* A ce jour : diffusion = thermique (en attendant retour diffusion = mecanique)
  113. C* IF (IFORMU.EQ.1 .OR. IFORMU.EQ.2) THEN
  114. IF (ISUPCH.EQ.6) THEN
  115. CALL TSHAPE(NEF,'GAUSS',IPINTE)
  116. ELSE IF (ISUPCH.EQ.2) THEN
  117. CALL TSHAPE(NEF,'GRAVITE',IPINTE)
  118. ELSE
  119. write(ioimp,*) 'CHAMAS : incoherence IFORMU ISUPCH'
  120. CALL ERREUR(5)
  121. RETURN
  122. ENDIF
  123. ELSE
  124. IPINTE = IMODEL.INFMOD(2+ISUPCH)
  125. ENDIF
  126. C =====
  127. C 3.4 - Calcul des flux nodaux equivalents (segment MELVAL)
  128. C =====
  129. IF (IDIM.EQ.3) THEN
  130. CALL CHAMA3(IPSONO,IPGEO,IPINTE,IPCHEQ)
  131. ELSE IF (IDIM.EQ.2) THEN
  132. CALL CHAMA2(IPSONO,IPGEO,IPINTE,IPCHEQ)
  133. ELSE IF (IDIM.EQ.1) THEN
  134. CALL CHAMA1(IPSONO,IPGEO,IPINTE,IPCHEQ)
  135. ENDIF
  136. IF (IERR.NE.0) GOTO 100
  137. C =====
  138. C 3.5 - Initialisation du MCHAML des flux de chaleur nodaux equivalents
  139. C (MCHAML) associe au modele elementaire iSou (maillage IMAMOD)
  140. C Remplissage des donnees associees a MCHAML dans MCHELM (global)
  141. C =====
  142. C Recuperation du nom de la composante duale dans le modele
  143. NOMID = imodel.LNOMID(2)
  144.  
  145. N2=NOMID.LESOBL(/2)
  146. SEGINI,MCHAML
  147. DO ii=1,N2
  148. * Comme on integre qu'un seul CHAMP en massif
  149. * et qu'en THERMOHYDRIQUE on a 3 composantes
  150. * possibles pour la duale, on cree 3 composantes
  151. * avec le meme MELVAL
  152. mchaml.NOMCHE(ii) = NOMID.LESOBL(ii)
  153. mchaml.TYPCHE(ii) ='REAL*8'
  154. mchaml.IELVAL(ii) = IPCHEQ
  155. ENDDO
  156.  
  157. mchelm.CONCHE(ISOU) = imodel.CONMOD
  158. mchelm.IMACHE(ISOU) = IPGEO
  159. mchelm.ICHAML(ISOU) = MCHAML
  160. mchelm.INFCHE(ISOU,3) = NIFOUR
  161. mchelm.INFCHE(ISOU,6) = 1
  162.  
  163. 100 CONTINUE
  164. C=====
  165. C Fin de la boucle sur les sous-modeles elementaires
  166. C=====
  167. C
  168. END
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  

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