Télécharger chacoq.eso

Retour à la liste

Numérotation des lignes :

  1. C CHACOQ SOURCE FANDEUR 16/11/30 21:15:05 9222
  2.  
  3. C=======================================================================
  4. C= C H A C O Q =
  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 COQUEs. =
  11. C= =
  12. C= Parametres : (E)=Entree (S)=Sortie =
  13. C= ------------ =
  14. C= IPMODL (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= IPCHEB (E) Pointeur du MCHAML de CARACTERISTIQUES =
  18. C= (Epaisseur necessaire pour les elements COQUEs) =
  19. C= ISUPCH (E) Support des champs en entree =
  20. C= NOMDUA (E) Nom de la composante du champ de flux equivalents =
  21. C= (Inutilise ici) =
  22. C= IPCHAL (S) Pointeur du champ aux noeuds des flux equivalents =
  23. C=======================================================================
  24.  
  25. SUBROUTINE CHACOQ (IPMODL,IFORMU, IPCHSO,IPCHEB,ISUPCH, NOMDUA,
  26. & IPCHAL)
  27.  
  28. IMPLICIT INTEGER(I-N)
  29. IMPLICIT REAL*8 (A-H,O-Z)
  30.  
  31. -INC CCOPTIO
  32. -INC CCREEL
  33.  
  34. -INC SMCHAML
  35. -INC SMMODEL
  36.  
  37. SEGMENT INFO
  38. INTEGER INFELL(JG)
  39. ENDSEGMENT
  40.  
  41. CHARACTER*(*) NOMDUA
  42.  
  43. MMODEL = IPMODL
  44. c* SEGACT,mmodel <- Actif en E/S (non modifie)
  45. NSOU = mmodel.KMODEL(/1)
  46.  
  47. mchelm = IPCHAL
  48. c* SEGACT,mchelm <- Actif en E/S et modifiable
  49. c* NSZC = mchelm.IMACHE(/1) <- On a ici : NSZC = NSOU
  50.  
  51. MCHEL1 = IPCHSO
  52. c* SEGACT,mchel1 <- Actif en E/S (non modifie)
  53. NSZ1 = mchel1.IMACHE(/1)
  54.  
  55. mchel2 = IPCHEB
  56. c* SEGACT,mchel2 <- Actif en E/S (non modifie)
  57. NSZ2 = mchel2.IMACHE(/1)
  58.  
  59. C BOUCLE SUR LES ZONES ELEMENTAIRES DU MODELE (ISOU)
  60. C ==================================================
  61. DO 100 ISOU = 1, NSOU
  62.  
  63. C Modele elementaire ISOU
  64. C =====
  65. IMODEL = mmodel.KMODEL(ISOU)
  66. C* SEGACT,IMODEL
  67. C =====
  68. C Recherche dans le MCHAML des sources (IPCHSO) de la sous-zone
  69. C associee au modele elementaire ISOU (IMAMOD et CONMOD), puis
  70. C recuperation des valeurs du champ elementaire de sources (MELVA1)
  71. C =====
  72. IPSON1 = 0
  73. IPSON2 = 0
  74. IPSON3 = 0
  75. DO is = 1, NSZ1
  76. IF (MCHEL1.IMACHE(is).EQ.imodel.IMAMOD .AND.
  77. & MCHEL1.CONCHE(is).EQ.imodel.CONMOD) THEN
  78. mchaml = MCHEL1.ICHAML(is)
  79. SEGACT,mchaml
  80. NCOELE = mchaml.NOMCHE(/2)
  81. ipo1 = 0
  82. ipo2 = 0
  83. ipo3 = 0
  84. CALL PLACE(mchaml.NOMCHE,NCOELE,ipo1,'SINF')
  85. CALL PLACE(mchaml.NOMCHE,NCOELE,ipo2,'SMOY')
  86. CALL PLACE(mchaml.NOMCHE,NCOELE,ipo3,'SSUP')
  87. IF (ipo1.NE.0 .AND. ipo2.NE.0 .AND. ipo3.NE.0) THEN
  88. IPSON1 = mchaml.IELVAL(ipo1)
  89. IPSON2 = mchaml.IELVAL(ipo2)
  90. IPSON3 = mchaml.IELVAL(ipo3)
  91. ENDIF
  92. SEGDES,mchaml
  93. GOTO 10
  94. ENDIF
  95. ENDDO
  96. 10 CONTINUE
  97. IF (IPSON1.EQ.0) GOTO 100
  98. C =====
  99. C Recherche dans le MCHAML des caracteristiques (IPCHEB) du
  100. C maillage (IMAMOD) associe au modele elementaire ISOU, puis
  101. C recuperation du MCHAML elementaire associe (MELVA2)
  102. C =====
  103. MELVA2 = 0
  104. DO is = 1, NSZ2
  105. IF (MCHEL2.IMACHE(is).EQ.imodel.IMAMOD .AND.
  106. & MCHEL2.CONCHE(is).EQ.imodel.CONMOD) THEN
  107. mchaml = MCHEL2.ICHAML(is)
  108. SEGACT,mchaml
  109. NCOELE = mchaml.NOMCHE(/2)
  110. IPOSI = 0
  111. CALL PLACE(mchaml.NOMCHE,NCOELE,IPOSI,'EPAI')
  112. IF (IPOSI.NE.0) THEN
  113. MELVA2 = mchaml.IELVAL(IPOSI)
  114. ENDIF
  115. SEGDES,mchaml
  116. GOTO 20
  117. ENDIF
  118. ENDDO
  119. 20 CONTINUE
  120. IF (MELVA2.EQ.0) THEN
  121. MOTERR(1:4) = 'EPAI'
  122. MOTERR(5:8) = 'CARA'
  123. CALL ERREUR(77)
  124. GOTO 100
  125. ENDIF
  126. C =====
  127. C Informations sur l'element fini du modele ISOU
  128. C =====
  129. NEF = imodel.NEFMOD
  130. IPOGEO = imodel.IMAMOD
  131. C Recuperation des caracteristiques d'integration
  132. IPINT1 = 0
  133. IF (IFORMU.EQ.1 .OR. IFORMU.EQ.2) THEN
  134. CALL TSHAPE(NEF,'GAUSS',IPINTE)
  135. C COQ6 COQ4 COQ8
  136. IF (NEF.EQ.41 .OR. NEF.EQ.49 .OR. NEF.EQ.56) THEN
  137. CALL TSHAPE(NEF,'NOEUD',IPINT1)
  138. ENDIF
  139. ELSE
  140. C A priori pour l'instant : formulations non prevues
  141. IPINTE = 0
  142. IPINT1 = 0
  143. CALL ERREUR(19)
  144. GOTO 100
  145. ENDIF
  146. C =====
  147. C Calcul des flux nodaux equivalents
  148. C =====
  149. IPCHQ1 = 0
  150. IPCHQ2 = 0
  151. IPCHQ3 = 0
  152. C Element fini de type COQ2 COQ3
  153. IF (NEF.EQ.44 .OR. NEF.EQ.27) THEN
  154. CALL CHACO1(IPSON1,IPSON2,IPSON3, MELVA2,
  155. & IPOGEO, IPINTE,
  156. & IPCHQ1,IPCHQ2,IPCHQ3)
  157. C Element fini de type COQ8 COQ6 COQ4
  158. ELSE IF (NEF.EQ.41 .OR. NEF.EQ.56 .OR. NEF.EQ.49) THEN
  159. CALL CHACO2(IPSON1,IPSON2,IPSON3, MELVA2,
  160. & IPOGEO, IPINTE,IPINT1,
  161. & IPCHQ1,IPCHQ2,IPCHQ3)
  162. ELSE
  163. CALL ERREUR(19)
  164. GOTO 100
  165. ENDIF
  166. C =====
  167. C Initialisation du MCHAML des flux de chaleur nodaux equivalents
  168. C (MCHAML) associe au modele elementaire ISOU (maillage IMAMOD)
  169. C Remplissage des donnees associees a MCHAML dans MCHELM (global)
  170. C =====
  171. N2 = 3
  172. SEGINI,MCHAML
  173. IF (IFORMU.EQ.1 .OR. IFORMU.EQ.2) THEN
  174. mchaml.NOMCHE(1) = 'QINF'
  175. mchaml.NOMCHE(2) = 'Q '
  176. mchaml.NOMCHE(3) = 'QSUP'
  177. ELSE
  178. C Nom des composantes a preciser en fonction des formulations !
  179. mchaml.NOMCHE(1) = '.INF'
  180. mchaml.NOMCHE(2) = '. '
  181. mchaml.NOMCHE(3) = '.SUP'
  182. ENDIF
  183. mchaml.TYPCHE(1) = 'REAL*8'
  184. mchaml.TYPCHE(2) = 'REAL*8'
  185. mchaml.TYPCHE(3) = 'REAL*8'
  186. mchaml.IELVAL(1) = IPCHQ1
  187. mchaml.IELVAL(2) = IPCHQ2
  188. mchaml.IELVAL(3) = IPCHQ3
  189. SEGDES,MCHAML
  190.  
  191. mchelm.CONCHE(ISOU) = imodel.CONMOD
  192. mchelm.IMACHE(ISOU) = IPOGEO
  193. mchelm.ICHAML(ISOU) = MCHAML
  194. mchelm.INFCHE(ISOU,3) = NIFOUR
  195. mchelm.INFCHE(ISOU,6) = 1
  196. C===
  197. 100 CONTINUE
  198. C===
  199. C Fin de la boucle sur les sous-modeles elementaires
  200.  
  201. RETURN
  202. END
  203.  
  204.  
  205.  

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