Télécharger chamas.eso

Retour à la liste

Numérotation des lignes :

chamas
  1. C CHAMAS SOURCE CB215821 24/04/12 21:15:15 11897
  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.'ELLIPTIQUE') IK1 = 2
  94. IF (IMODEL.MATMOD(3).EQ.'ELARGIE ') IK1 = 3
  95. IF (ISUPCH.NE.6) THEN
  96. MOTERR(1:8)='MCHAML'
  97. CALL ERREUR(981)
  98. RETURN
  99. ENDIF
  100. CALL TSHAPE(NEF,'GAUSS',IPINTE)
  101. CALL CHAGA1(IPCHAM,IPGEO,IPINTE,IK1,IPSON1,XQT0)
  102. IF (IERR.NE.0) RETURN
  103. IPSONO=IPSON1
  104. C
  105. C Sinon ERREUR 251
  106. ELSE
  107. CALL ERREUR(251)
  108. RETURN
  109. ENDIF
  110. ENDIF
  111. C
  112. C =====
  113. C 3.3 - Recuperation d'informations sur l'element fini du modele
  114. C elementaire iSou (NEF)
  115. C =====
  116. IF (IFORMU.EQ.1 .OR. IFORMU.EQ.2 .OR. IFORMU.EQ.3) THEN
  117. C* A ce jour : diffusion = thermique (en attendant retour diffusion = mecanique)
  118. C* IF (IFORMU.EQ.1 .OR. IFORMU.EQ.2) THEN
  119. IF (ISUPCH.EQ.6) THEN
  120. CALL TSHAPE(NEF,'GAUSS',IPINTE)
  121. ELSE IF (ISUPCH.EQ.2) THEN
  122. CALL TSHAPE(NEF,'GRAVITE',IPINTE)
  123. ELSE
  124. write(ioimp,*) 'CHAMAS : incoherence IFORMU ISUPCH'
  125. CALL ERREUR(5)
  126. RETURN
  127. ENDIF
  128. ELSE
  129. IF (imodel.INFMOD(/1).LT.2+ISUPCH) THEN
  130. CALL ELQUOI(NEF,0,ISUPCH,ipinf,imodel)
  131. IF (IERR.NE.0) RETURN
  132. info = ipinf
  133. IPINTE = info.INFELL(11)
  134. SEGSUP,info
  135. ELSE
  136. IPINTE = imodel.INFMOD(2+ISUPCH)
  137. ENDIF
  138. ENDIF
  139. C =====
  140. C 3.4 - Calcul des flux nodaux equivalents (segment MELVAL)
  141. C =====
  142. IF (IDIM.EQ.3) THEN
  143. CALL CHAMA3(IPSONO,IPGEO,IPINTE,IPCHEQ)
  144. ELSE IF (IDIM.EQ.2) THEN
  145. CALL CHAMA2(IPSONO,IPGEO,IPINTE,IPCHEQ)
  146. ELSE IF (IDIM.EQ.1) THEN
  147. CALL CHAMA1(IPSONO,IPGEO,IPINTE,IPCHEQ)
  148. ENDIF
  149. IF (IERR.NE.0) GOTO 100
  150. C =====
  151. C 3.5 - Initialisation du MCHAML des flux de chaleur nodaux equivalents
  152. C (MCHAML) associe au modele elementaire iSou (maillage IMAMOD)
  153. C Remplissage des donnees associees a MCHAML dans MCHELM (global)
  154. C =====
  155. C Recuperation du nom de la composante duale dans le modele
  156. NOMID = imodel.LNOMID(2)
  157.  
  158. N2=NOMID.LESOBL(/2)
  159. SEGINI,MCHAML
  160. DO ii=1,N2
  161. * Comme on integre qu'un seul CHAMP en massif
  162. * et qu'en THERMOHYDRIQUE on a 3 composantes
  163. * possibles pour la duale, on cree 3 composantes
  164. * avec le meme MELVAL
  165. mchaml.NOMCHE(ii) = NOMID.LESOBL(ii)
  166. mchaml.TYPCHE(ii) ='REAL*8'
  167. mchaml.IELVAL(ii) = IPCHEQ
  168. ENDDO
  169.  
  170. mchelm.CONCHE(ISOU) = imodel.CONMOD
  171. mchelm.IMACHE(ISOU) = IPGEO
  172. mchelm.ICHAML(ISOU) = MCHAML
  173. mchelm.INFCHE(ISOU,3) = NIFOUR
  174. mchelm.INFCHE(ISOU,6) = 1
  175.  
  176. 100 CONTINUE
  177. C=====
  178. C Fin de la boucle sur les sous-modeles elementaires
  179. C=====
  180. C
  181. END
  182.  
  183.  
  184.  
  185.  
  186.  

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