Télécharger chaga2.eso

Retour à la liste

Numérotation des lignes :

chaga2
  1. C CHAGA2 SOURCE CB215821 20/11/04 21:15:29 10766
  2.  
  3. C=======================================================================
  4. C= C H A G A 2 =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcule la chaleur totale imposee et la "renormalise" a celle =
  10. C= demandee par les modeles de source de chaleur qui le necessite =
  11. C= (caracteristique QTOT pour source gaussienne). =
  12. C= =
  13. C= La quantite totale de chaleur fournie par les modeles qui ne =
  14. C= necessite pas de renormalisation sur leur sous-zone de definition =
  15. C= doit etre ajoutee a la quantite totale de chaleur demandee. =
  16. C= =
  17. C= Parametres : (E)=Entree (S)=Sortie =
  18. C= ------------ =
  19. C= IPMODE (E) Pointeur du MMODEL a traiter =
  20. C= IPCHSO (E) Pointeur du MCHAML de caracteristiques des sources =
  21. C= IPCHA1 (E) Pointeur du MCHAML de flux de chaleur integres =
  22. C= IPCHA2 (S) Pointeur du MCHAML de flux de chaleur "renormalise" =
  23. C= =
  24. C=======================================================================
  25.  
  26. SUBROUTINE CHAGA2(IPMODE,IPCHSO,IPCHA1,IPCHA2)
  27.  
  28. IMPLICIT INTEGER(I-N)
  29. IMPLICIT REAL*8 (A-H,O-Z)
  30.  
  31.  
  32. -INC PPARAM
  33. -INC CCOPTIO
  34. -INC SMCHAML
  35. -INC SMMODEL
  36. -INC CCREEL
  37.  
  38. CHARACTER*4 MQTOT(1)
  39. CHARACTER*(LOCOMP) CHACOM
  40.  
  41. DATA MQTOT /'QTOT'/
  42.  
  43. SEGMENT TRAVSP1
  44. INTEGER LNCONS(NS1)
  45. ENDSEGMENT
  46. SEGMENT TRAVSP2
  47. REAL*8 LQCONS(NC1)
  48. ENDSEGMENT
  49.  
  50. C=====
  51. C Initialisations
  52. C=====
  53. MMODEL = IPMODE
  54. NSOU = KMODEL(/1)
  55. MCHELM = IPCHSO
  56. MCHEL1 = IPCHA1
  57. IPCHA2 = 0
  58.  
  59. C Segment L(J)=I, Je sous-zone, Ie constituant : mise a zero
  60. NS1 = NSOU
  61. SEGINI,TRAVSP1
  62. DO 1 IS1 = 1,NS1
  63. LNCONS(IS1) = 0
  64. 1 CONTINUE
  65. C
  66. C=====
  67. C Precondionnement : identification du nb. de constituants
  68. C et de leurs sous-zones resp.
  69. C=====
  70. NBCONS = 0
  71. DO 10 ISOU = 1,NSOU
  72. IF (LNCONS(ISOU).NE.0) GOTO 10
  73. NBCONS = NBCONS + 1
  74. IMODEL = MMODEL.KMODEL(ISOU)
  75. NLCONI = IMODEL.CONMOD(/1)
  76. DO 11 JSOU = ISOU,NSOU
  77. IF (LNCONS(JSOU).NE.0) GOTO 11
  78. IMODE1 = MMODEL.KMODEL(JSOU)
  79. NLCONJ = IMODE1.CONMOD(/1)
  80. IF (NLCONJ.EQ.NLCONI) THEN
  81. IF (IMODEL.CONMOD.EQ.IMODE1.CONMOD) THEN
  82. LNCONS(JSOU) = NBCONS
  83. ENDIF
  84. ENDIF
  85. 11 CONTINUE
  86. 10 CONTINUE
  87. c write(6,*) ' LNCONS =',(LNCONS(i),i=1,nsou)
  88. C
  89. IF (NBCONS.EQ.0) THEN
  90. WRITE(IOIMP,*) ' Probleme identification constituants'
  91. CALL ERREUR(21)
  92. RETURN
  93. ENDIF
  94. C
  95. C=====
  96. C Boucle Sommation des flux nodaux de IPCHA1 (MCHEL1)
  97. C=====
  98. C LQCONS : quantite totale de chaleur par constituant
  99. C
  100. C Mise a zero de LQCONS
  101. NC1 = NBCONS
  102. SEGINI,TRAVSP2
  103. DO 20 IC1 = 1,NC1
  104. LQCONS(IC1) = 0.D0
  105. 20 CONTINUE
  106. C
  107. XQT0 = 0.D0
  108. XQT1 = 0.D0
  109. NCON = 0
  110.  
  111. DO 100 ISOU = 1, NSOU
  112. C
  113. C Distinction sous-zone modele avec QTOT ou non
  114. MCHAML = MCHELM.ICHAML(ISOU)
  115. SEGACT,MCHAML
  116. N2 = MCHAML.NOMCHE(/2)
  117. CHACOM = MQTOT(1)
  118. CALL PLACE(MCHAML.NOMCHE,N2,IPLACE,CHACOM)
  119. IF (IPLACE.EQ.0) GOTO 100
  120. C
  121. C Calcul de XQT1
  122. ICONS = LNCONS(ISOU)
  123. MCHAM1 = MCHEL1.ICHAML(ISOU)
  124. MELVA1 = MCHAM1.IELVAL(1)
  125. NBPT1 = MELVA1.VELCHE(/1)
  126. NBEL1 = MELVA1.VELCHE(/2)
  127. DO 110 IEL1=1,NBEL1
  128. DO 111 IPT1=1,NBPT1
  129. LQCONS(ICONS) = LQCONS(ICONS) + MELVA1.VELCHE(IPT1,IEL1)
  130. 111 CONTINUE
  131. 110 CONTINUE
  132. 100 CONTINUE
  133. C======
  134. C Fin boucle somme flux nodaux
  135. C======
  136. C
  137. C
  138. C======
  139. C Boucle Renormalisation
  140. C======
  141. DO 200 ISOU = 1, NSOU
  142. C Distinction sous-zone modele avec QTOT ou non
  143. MCHAML = MCHELM.ICHAML(ISOU)
  144. N2 = MCHAML.IELVAL(/1)
  145. CHACOM = MQTOT(1)
  146. CALL PLACE(MCHAML.NOMCHE,N2,IPLACE,CHACOM)
  147. IF (IPLACE.EQ.0) GOTO 200
  148. C XQT0 : Quantite totale de chaleur specifie (QTOT)
  149. IF (MCHAML.TYPCHE(IPLACE).EQ.'REAL*8') THEN
  150. MELVAL = IELVAL(IPLACE)
  151. N1PTEL = MELVAL.VELCHE(/1)
  152. N1EL = MELVAL.VELCHE(/2)
  153. IF (N1PTEL.NE.1.AND.N1EL.NE.1) GOTO 999
  154. XQT0 = MELVAL.VELCHE(1,1)
  155. c write(6,*) 'XQT0 =',XQT0
  156. ELSE
  157. GOTO 998
  158. ENDIF
  159. C XQT1 : Quantite totale de chaleur integree
  160. ICONS = LNCONS(ISOU)
  161. XQT1 = LQCONS(ICONS)
  162. C Facteur de renormalisation
  163. IF (ABS(XQT1).GT.XPETIT) THEN
  164. XQT1 = XQT0 / XQT1
  165. ELSE
  166. XQT1 = 0.D0
  167. ENDIF
  168. C Acces au valeurs (MELVAL)
  169. MCHAM1 = MCHEL1.ICHAML(ISOU)
  170. MELVA1 = MCHAM1.IELVAL(1)
  171. NBPT1 = MELVA1.VELCHE(/1)
  172. NBEL1 = MELVA1.VELCHE(/2)
  173. C Nouveau MELVAL
  174. N1PTEL = NBPT1
  175. N1EL = NBEL1
  176. N2PTEL = 0
  177. N2EL = 0
  178. SEGINI,MELVA2
  179. DO 210 IEL1=1,NBEL1
  180. DO 211 IPT1=1,NBPT1
  181. MELVA2.VELCHE(IPT1,IEL1) = XQT1 * MELVA1.VELCHE(IPT1,IEL1)
  182. 211 CONTINUE
  183. 210 CONTINUE
  184. SEGSUP,MELVA1
  185. MCHAM1.IELVAL(1) = MELVA2
  186. SEGACT,MCHAM1*NOMOD
  187. 200 CONTINUE
  188. C======
  189. C fin boucle renormalisation
  190. C======
  191. C
  192. SEGSUP,TRAVSP1,TRAVSP2
  193. IPCHA2 = IPCHA1
  194. C
  195. RETURN
  196. C
  197. C==== Gestion erreurs et fin
  198.  
  199. C Le nom de la composante ne correspond pas a des variables reelles.
  200. 998 CONTINUE
  201. CALL ERREUR(671)
  202. RETURN
  203. C
  204. C La composante est attendue constante par sous-zones
  205. 999 CONTINUE
  206. MOTERR(1:4) = MQTOT(1)
  207. MOTERR(5:20) = 'CARACTERISTIQUES'
  208. CALL ERREUR(1065)
  209. RETURN
  210.  
  211. END
  212.  
  213.  
  214.  
  215.  

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