Télécharger chamas.eso

Retour à la liste

Numérotation des lignes :

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

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