Télécharger convma.eso

Retour à la liste

Numérotation des lignes :

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

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