Télécharger convma.eso

Retour à la liste

Numérotation des lignes :

convma
  1. C CONVMA SOURCE OF166741 25/02/21 21:15:41 12166
  2.  
  3. C=======================================================================
  4. C= C O N V M A =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul des flux nodaux equivalents a une condition de convection =
  10. C= forcee. Sousprogramme appele par CONVEC (convec.eso). =
  11. C= =
  12. C= Parametres : (E)=Entree (S)=Sortie =
  13. C= ------------ =
  14. C= IPMODE (E) Pointeur sur le segment MMODEL =
  15. C= IPCHCA (E) Pointeur sur le segment MCHELM de CARACTERISTIQUES =
  16. C= IPCHPO (E) Pointeur sur le CHPOINT contenant la temperature =
  17. C= exterieure le long de la surface de convection =
  18. C= IPCONV (S) Pointeur sur le champ des flux equivalents =
  19. C= =
  20. C= Variables locales : =
  21. C= ------------------- =
  22. C= IPGEOM Pointeur sur un MAILLAGE elementaire du CHPOINT =
  23. C= IPOGEO Pointeur sur un MAILLAGE commun au CHPOINT et au MASSIF =
  24. C= =
  25. C= Denis ROBERT, le 28 avril 1988. =
  26. C= =
  27. C= CORRECTIONS =
  28. C= CB215821 24/02/2016 : Correction d'une erreur dans les COQx =
  29. C= Mauvaise utilisation de MATMOD =
  30. C= Ajout d'une erreur 1050 =
  31. C=======================================================================
  32.  
  33. SUBROUTINE CONVMA (IPMODE,IPCHCA,IPCHPO,IPCONV)
  34.  
  35. IMPLICIT INTEGER(I-N)
  36. IMPLICIT REAL*8 (A-H,O-Z)
  37.  
  38. -INC PPARAM
  39. -INC CCOPTIO
  40. -INC CCHAMP
  41.  
  42. -INC SMCOORD
  43. -INC SMCHAML
  44. -INC SMCHPOI
  45. -INC SMMODEL
  46. -INC SMELEME
  47.  
  48. -INC TMPTVAL
  49.  
  50. SEGMENT NOTYPE
  51. CHARACTER*16 TYPE(NBTYPE)
  52. ENDSEGMENT
  53.  
  54. PARAMETER (NINF=3)
  55. INTEGER INFOS(NINF)
  56. CHARACTER*(NCONCH) CONM
  57. CHARACTER*(LOCOMP) MOCOMP,NOMATT,NOMCQ
  58. CHARACTER*10 PEAU
  59. LOGICAL ltelq
  60.  
  61. C ===
  62. C 0 - QUELQUES INITIALISATIONS ET SEGMENTS UTILES
  63. C ===
  64. IPCONV=0
  65.  
  66. NBROBL = 1
  67. NBRFAC = 0
  68. SEGINI,nomid
  69. nomid.LESOBL(1) = 'H '
  70. MOMATR = nomid
  71.  
  72. NBTYPE=1
  73. SEGINI,notype
  74. notype.TYPE(1) = 'REAL*8'
  75. MOTYR8 = notype
  76.  
  77. C CHAMP/ELT ELEMENTAIRE DES CHALEURS NODALES EQUIVALENTES
  78. N2=1
  79. SEGINI,MCHAM2
  80. MCHAM2.NOMCHE(1) = ' '
  81. MCHAM2.TYPCHE(1) = 'REAL*8'
  82. MCHAM2.IELVAL(1) = -99
  83. IPCHAM2 = MCHAM2
  84.  
  85. L1=7
  86. N1=1
  87. N3=6
  88. SEGINI,MCHEL2
  89. MCHEL2.TITCHE ='CHALEUR'
  90. MCHEL2.IFOCHE = IFOUR
  91. C* MCHEL2.IFOCHE = IFOMOD
  92. MCHEL2.CONCHE(1) = ' '
  93. MCHEL2.IMACHE(1) = -99
  94. MCHEL2.ICHAML(1) = IPCHAM2
  95. MCHEL2.INFCHE(1,3) = NIFOUR
  96. MCHEL2.INFCHE(1,4) = 0
  97. MCHEL2.INFCHE(1,6) = 1
  98. IPCHEL2 = MCHEL2
  99.  
  100. C 1 - QUELQUES TRANSFORMATIONS SUR LES DONNEES
  101. C ==============================================
  102. C 1.1 - Creation d'un objet MAILLAGE contenant une seule fois tous les
  103. C points du CHPOINT IPCHPO (CHPOINT ACTIF EN E/S)
  104. C (fusion des maillages supports de tous les MSOUPO)
  105. C =====
  106. MCHPOI=IPCHPO
  107. c* SEGACT,MCHPOI
  108. MSOUPO=IPCHP(1)
  109. c* SEGACT,MSOUPO
  110. IPGEOM=IGEOC
  111. c* SEGDES,MSOUPO
  112. ltelq=.false.
  113. DO i=2,IPCHP(/1)
  114. MSOUPO=IPCHP(i)
  115. c* SEGACT,MSOUPO
  116. IGEO1=IGEOC
  117. c* SEGDES,MSOUPO
  118. CALL FUSE(IPGEOM,IGEO1,IRET,ltelq)
  119. if (ierr.ne.0) goto 100
  120. IPGEOM=IRET
  121. ENDDO
  122. c* SEGDES,MCHPOI
  123. c* meleme=IPGEOM
  124. c* segact,meleme
  125. C =====
  126. C 1.2 - Recuperation du MMODEL (ACTIF EN E/S)
  127. C =====
  128. MMODEL = IPMODE
  129. c* SEGACT,MMODEL
  130. NSOUS = mmodel.KMODEL(/1)
  131.  
  132. C =====
  133. C 1.3 - Determination du support du champ de caracteristiques H
  134. C =====
  135. CALL QUESUP(IPMODE,IPCHCA,0,0,iok,ISUPCA)
  136. IF (IERR.NE.0 .OR. iok.EQ.9999) THEN
  137. write(ioimp,*) 'CONVEC : ISUPCA incorrect'
  138. CALL ERREUR(21)
  139. goto 100
  140. ENDIF
  141.  
  142. C ========================================================
  143. C 2 - BOUCLE SUR LES ZONES ELEMENTAIRES DU MODELE (iSou)
  144. C ========================================================
  145. DO iSou= 1, NSOUS
  146.  
  147. iOK = 0
  148.  
  149. ICHELS = 0
  150. IPTEMP = 0
  151. IVAMAT = 0
  152. IPCHEQ = 0
  153.  
  154. C =====
  155. C 2.1 - Analyse du sous-modele (iSou)
  156. C =====
  157. IMODEL = KMODEL(iSou)
  158. c* SEGACT,IMODEL
  159.  
  160. IPMAIL = imodel.IMAMOD
  161. CONM = imodel.CONMOD
  162.  
  163. C RECUPERATION DES CARACTERISTIQUES D'INTEGRATION
  164. NEF = imodel.NEFMOD
  165. NLG = NUMGEO(NEF)
  166. CALL TSHAPE(NLG,'GAUSS',IPINTE)
  167. if (ierr.NE.0) then
  168. call erreur(251)
  169. goto 100
  170. endif
  171.  
  172. PEAU = ' '
  173. C Formulation COQx (COQ2,COQ3,COQ4,COQ6,COQ8)
  174. IF (NEF.EQ.44 .OR. NEF.EQ.27 .OR. NEF.EQ.56 .OR.
  175. & NEF.EQ.49 .OR. NEF.EQ.41) THEN
  176. if (imodel.matmod(/2) .lt. 3) then
  177. moterr(1:4) = NOMTP(NEF)
  178. call erreur(1050)
  179. goto 100
  180. endif
  181.  
  182. PEAU = imodel.MATMOD(3)
  183. IF (PEAU .EQ. 'INFERIEURE') THEN
  184. nomatt = 'TINF'
  185. nomcq = 'QINF'
  186. ELSEIF (PEAU .EQ. 'SUPERIEURE') THEN
  187. nomatt = 'TSUP'
  188. nomcq = 'QSUP'
  189. ELSE
  190. moterr(1:8) = 'MOT '
  191. moterr(9:16) = PEAU(1:8)
  192. call erreur(11)
  193. goto 100
  194. ENDIF
  195. C Formulation STANDARD (pas COQx)
  196. ELSE
  197. nomatt = 'T '
  198. nomcq = 'Q '
  199. ENDIF
  200.  
  201. C ON GENERE UN CHAMELEM ELEMENTAIRE A PARTIR DU CHPOINT
  202. C DE TEMPERATURE EXTERIEURE ET DU MAILLAGE ELEMENTAIRE IPMAIL
  203. CALL CHAME1(IPMAIL,0,IPCHPO,' ',ICHELS,ISUPCA)
  204. if (ierr.ne.0) GOTO 10
  205. MCHEL1 = ICHELS
  206. c* SEGACT,MCHEL1
  207. MCHAM1 = MCHEL1.ICHAML(1)
  208. c* SEGACT,MCHAM1
  209. C Recherche de la bonne composante (meme s'il n'y en a qu'une)
  210. ivfr = 0
  211. DO i = 1, mcham1.ielval(/1)
  212. IF (mcham1.NOMCHE(i)(1:4).EQ.nomatt) ivfr=i
  213. ENDDO
  214. IF (ivfr.EQ.0) THEN
  215. MOTERR(1:4) = nomatt
  216. MOTERR(5:30) = 'de TEMPERATURE exterieure'
  217. CALL ERREUR(77)
  218. GOTO 10
  219. ENDIF
  220. IPTEMP = mcham1.IELVAL(ivfr)
  221.  
  222. C RECUPERATION DU COEFFICIENT D'ECHANGE
  223. C ON GENERE UN CHAMELEM ELEMENTAIRE DE CARACTERISTIQUES ET
  224. C DU MAILLAGE ELEMENTAIRE IPMAIL
  225. CALL IDENT(IPMAIL,CONM,IPCHCA,0,INFOS,IOK)
  226. CALL KOMCHA(IPCHCA,IPMAIL,CONM,MOMATR,MOTYR8,1,INFOS,3,IVAMAT)
  227. if (ierr .ne. 0) goto 10
  228. MPTVAL = IVAMAT
  229. if (mptval.ival(/1) .lt. 1) then
  230. call erreur(472)
  231. goto 10
  232. endif
  233. IPCOEF = mptval.IVAL(1)
  234.  
  235. C CALCUL DES FLUX NODAUX EQUIVALENTS
  236. IF (NLG.EQ.1) THEN
  237. CALL INTCN0(IPTEMP,IPCOEF,IPMAIL,IPINTE,IPCHEQ)
  238. ELSE IF (NLG.EQ.2.OR.NLG.EQ.3) THEN
  239. CALL INTCN1(IPTEMP,IPCOEF,IPMAIL,IPINTE,IPCHEQ)
  240. ELSE IF (NLG.EQ.4.OR.NLG.EQ.6.OR.NLG.EQ.8.OR.
  241. & NLG.EQ.10) THEN
  242. CALL INTCN2(IPTEMP,IPCOEF,IPMAIL,IPINTE,IPCHEQ)
  243. ENDIF
  244. IF (ierr.ne.0) goto 10
  245.  
  246. C CHAMELEM ELEMENTAIRE DES CHALEURS NODALES EQUIVALENTES
  247. MCHEL2 = IPCHEL2
  248. c* segact,mchel2*mod
  249. MCHEL2.IMACHE(1) = IPMAIL
  250. MCHEL2.CONCHE(1) = CONM
  251. C* MCHEL2.INFCHE(1,4) = IPINTE
  252. C* MCHEL2.INFCHE(1,6) = 6
  253. MCHAM2 = IPCHAM2
  254. c* segact,mcham2*mod
  255. MCHAM2.NOMCHE(1) = nomcq
  256. MCHAM2.IELVAL(1) = IPCHEQ
  257.  
  258. C ON TRANSFORME LE CHAMELEM EN CHPOINT
  259. CALL CHAMPO(IPCHEL2,0,IPCHP1,idum)
  260. if (ierr.ne.0) goto 10
  261.  
  262. C ON REGROUPE,LE CAS ECHEANT,LES DIFFERENTS CHPOINTS
  263. IF (iSou.GT.1) THEN
  264. CALL ADCHPO(IPCHP1,IPCONV,IPCRET,1.D0,1.D0)
  265. CALL DTCHPO(IPCHP1)
  266. CALL DTCHPO(IPCONV)
  267. IF (IPCRET.EQ.0) GOTO 10
  268. IPCONV=IPCRET
  269. ELSE
  270. IPCONV=IPCHP1
  271. ENDIF
  272. c* ? interet
  273. CALL ACTOBJ('CHPOINT ',IPCONV,1)
  274.  
  275. iOK=1
  276. 10 continue
  277. c* iptemp peut provenir d'un preconditionnement : donc a ne pas detruire
  278. c* if (iptemp.ne.0) then
  279. c* melval = iptemp
  280. c* segsup,melval
  281. c* endif
  282. c* ichels peut provenir d'un preconditionnement : donc a ne pas detruire
  283. c* if (ichels.ne.0) then
  284. c* mchel1 = ichels
  285. c* segsup,mchel1
  286. c* endif
  287. if (ipcheq.ne.0) then
  288. melval = ipcheq
  289. segsup,melval
  290. endif
  291. if (ivamat.ne.0) then
  292. mptval = ivamat
  293. segsup,mptval
  294. endif
  295. IF (iOK.EQ.0) GOTO 100
  296.  
  297. ENDDO
  298. C =============================
  299. C 2 - FIN DE LA BOUCLE (iSou)
  300. C =============================
  301.  
  302. C Menage final
  303. 100 CONTINUE
  304. nomid = MOMATR
  305. SEGSUP,nomid
  306. notype = MOTYR8
  307. SEGSUP,notype
  308.  
  309. mchaml = IPCHAM2
  310. mchelm = IPCHEL2
  311. SEGSUP,mchaml,mchelm
  312.  
  313. c return
  314. END
  315.  
  316.  
  317.  

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