Télécharger ylap22.eso

Retour à la liste

Numérotation des lignes :

ylap22
  1. C YLAP22 SOURCE OF166741 24/12/13 21:17:42 12097
  2. C YLAP11 SOURCE LEPOTIER 03/02/13 21:24:03 4578
  3. SUBROUTINE YLAP22()
  4. C************************************************************************
  5. C
  6. C PROJET : CASTEM 2000
  7. C
  8. C NOM : YLAPL11
  9. C
  10. C DESCRIPTION : Voir YLAPL1
  11. C
  12. C
  13. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  14. C
  15. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF
  16. C
  17. C************************************************************************
  18. C
  19. C
  20. C APPELES (E/S) : LIRMOT, ERREUR
  21. C
  22. C
  23. C APPELES : YLAPL12
  24. C
  25. C************************************************************************
  26. C
  27. C*** ENTREE / SORTIE (voir Phrase d'appel GIBIANE)
  28. C
  29. C***********************************************************************
  30. C
  31. C HISTORIQUE (Anomalies et modifications éventuelles)
  32. C
  33. C HISTORIQUE : 11/02/2003 Ajout de l'option MIXT pour la température
  34. C
  35. C************************************************************************
  36. C
  37. IMPLICIT INTEGER(I-N)
  38.  
  39. -INC PPARAM
  40. -INC CCOPTIO
  41. -INC SMCHPOI
  42. -INC SMLMOTS
  43. POINTEUR MLMNOM.MLMOTS
  44. POINTEUR MLDEFO.MLMOTS
  45. -INC SMCHAML
  46. POINTEUR ICOGRV.MCHELM
  47. POINTEUR ICOGRT.MCHELM
  48. C
  49. C**** Variables de SMLMOTS
  50. C
  51. INTEGER JGM, JGN
  52. C
  53. C**** Variables de SMMATRIK
  54. C
  55. INTEGER NKID, NKMT, NMATRI, NRIGE
  56. C
  57. C**** Variables du programme
  58. C
  59. INTEGER ICELL, IRET, INDIC, NBCOMP
  60. & , IDOMA, MELEMC, MELEMF, MELEFL, ICHPSU, ICHPDI, ICHPVO
  61. & , INORM
  62. & , IRN, IVN, ITN, IGRVN, IGRTN
  63. & , IVNIMP, ITAUIM, ITIMP,IQIMP,IMIXT
  64. & , ILIINC, NC, INEFMD, ICOND
  65. & , IJACO, ICHFLU, ICHRES, NSOUPO,ICLAU
  66. REAL*8 MU,KAPPA,CV,DELTAT,XKT
  67. CHARACTER*(40) MESERR
  68. CHARACTER*4 MOT,LFLUX(2), LIMPL(2)
  69. CHARACTER*8 MOT2
  70. CHARACTER*8 TYPE
  71. LOGICAL LOGRES,LOGIMP,LOGAN
  72. C
  73. DATA LFLUX/'FLUX','RESI'/
  74. DATA LIMPL/'EXPL','IMPL'/
  75. C
  76. C**** Initialisation des variables pour la gestion des erreurs.
  77. C
  78. MESERR = ' '
  79. LOGAN = .FALSE.
  80. LOGRES =.TRUE.
  81. C
  82. C******* Flux ou residu?
  83. C
  84. C
  85. CALL LIRMOT(LIMPL,2,ICELL,1)
  86. IF(IERR .NE. 0)GOTO 9999
  87. IF(ICELL .EQ. 1)THEN
  88. LOGIMP=.FALSE.
  89. ELSEIF(ICELL .EQ. 2)THEN
  90. LOGIMP=.TRUE.
  91. ELSE
  92. WRITE(IOIMP,*) 'Erreur de programmation'
  93. CALL ERREUR(5)
  94. GOTO 9999
  95. ENDIF
  96.  
  97.  
  98. C
  99. C**********************************
  100. C**** Lecture de l'objet MODELE ***
  101. C**********************************
  102. C
  103. c CALL GIBTEM(XKT)
  104. c WRITE(6,*) 'XKT1=',XKT
  105. ICOND = 1
  106. CALL QUETYP(TYPE,ICOND,IRET)
  107.  
  108. IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN
  109. WRITE(6,*)' On attend un objet MMODEL'
  110. RETURN
  111. ENDIF
  112. CALL LIROBJ('MMODEL',MMODEL,ICOND,IRET)
  113. IF(IERR.NE.0)GOTO 9999
  114. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  115. IF(IERR.NE.0)GOTO 9999
  116. c CALL GIBTEM(XKT)
  117. c WRITE(6,*) 'XKT2=',XKT
  118. C
  119. C**** Centre, FACE et FACEL
  120. C
  121. CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  122. c CALL GIBTEM(XKT)
  123. c WRITE(6,*) 'XKT3=',XKT
  124. IF(IERR .NE. 0) GOTO 9999
  125. C
  126. CALL LEKTAB(IDOMA,'FACE',MELEMF)
  127. c CALL GIBTEM(XKT)
  128. c WRITE(6,*) 'XKT4=',XKT
  129. IF(IERR .NE. 0) GOTO 9999
  130. C
  131. CALL LEKTAB(IDOMA,'FACEL',MELEFL)
  132. c CALL GIBTEM(XKT)
  133. c WRITE(6,*) 'XKT5=',XKT
  134. IF(IERR .NE. 0) GOTO 9999
  135. C
  136. C**** Lecture du CHPOINT contenant les surfaces des faces.
  137. C
  138. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  139. c CALL GIBTEM(XKT)
  140. c WRITE(6,*) 'XKT6=',XKT
  141. IF(IERR .NE. 0) GOTO 9999
  142. C
  143. C**** Lecture du CHPOINT contenant les diametres minimums.
  144. C
  145. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  146. c CALL GIBTEM(XKT)
  147. c WRITE(6,*) 'XKT7=',XKT
  148. IF(IERR .NE. 0) GOTO 9999
  149. C
  150. C**** Lecture du CHPOINT contenant les volumes
  151. C
  152. CALL LEKTAB(IDOMA,'XXVOLUM',ICHPVO)
  153. c CALL GIBTEM(XKT)
  154. c WRITE(6,*) 'XKT8=',XKT
  155. IF(IERR .NE. 0) GOTO 9999
  156. C
  157. C********** Les normales aux faces
  158. C
  159. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  160. IF(IERR .NE. 0) GOTO 9999
  161.  
  162. C
  163. C
  164. C
  165. C
  166. C**** Température
  167. C
  168. TYPE='CHPOINT '
  169. CALL LIROBJ(TYPE,ITN,1,IRET)
  170. IF(IERR .NE. 0) GOTO 9999
  171. JGN = 4
  172. JGM = 1
  173. SEGINI MLMNOM
  174. MLMNOM.MOTS(1) = 'SCAL'
  175. CALL QUEPO1(ITN, MELEMC, MLMNOM)
  176. IF(IERR .NE. 0) GOTO 9999
  177. SEGSUP MLMNOM
  178. C
  179. C
  180. C
  181. C**** Gradient de la temperature
  182. C
  183. TYPE='CHPOINT '
  184. CALL LIROBJ(TYPE,IGRTN,1,IRET)
  185. IF(IERR .NE. 0) GOTO 9999
  186. JGN = 4
  187. JGM=1
  188. SEGINI MLMNOM
  189. MLMNOM.MOTS(1) = 'FLUX'
  190. CALL QUEPO1(IGRTN, MELEMF, MLMNOM)
  191. IF(IERR .NE. 0) GOTO 9999
  192. SEGSUP MLMNOM
  193.  
  194. C
  195. IF (LOGIMP) THEN
  196. CALL LIROBJ('MCHAML ',ICOGRT,1,IRET)
  197. IF(IERR .NE. 0) GOTO 9999
  198. ENDIF
  199.  
  200. CALL LIRCHA(MOT,0,IRET)
  201. IF(IRET .NE. 0)THEN
  202. IF(MOT .EQ. 'QIMP')THEN
  203. TYPE='CHPOINT '
  204. CALL LIROBJ(TYPE,IQIMP,1,IRET)
  205. IF(IERR .NE. 0) GOTO 9999
  206. MCHPOI = IQIMP
  207. SEGACT MCHPOI
  208. NSOUPO = MCHPOI.IPCHP(/1)
  209. SEGDES MCHPOI
  210. IF(NSOUPO .GT.0)THEN
  211. JGN = 4
  212. JGM =1
  213. SEGINI MLMNOM
  214. MLMNOM.MOTS(1) = 'FLUX'
  215. CALL QUEPO1(IQIMP, 0, MLMNOM)
  216. IF(IERR .NE. 0) GOTO 9999
  217. SEGSUP MLMNOM
  218. ELSE
  219. IQIMP=0
  220. ENDIF
  221. ELSE
  222. IQIMP=0
  223. C********** Je m'excuse et je le remets dans la pile
  224. C
  225. CALL REFUS
  226. ENDIF
  227. ELSE
  228. IQIMP=0
  229. ENDIF
  230.  
  231. C
  232. C Conditions aux limites mixtes
  233. C
  234. CALL LIRCHA(MOT,0,IRET)
  235. IF(IRET .NE. 0)THEN
  236. IF(MOT .EQ. 'MIXT')THEN
  237. TYPE='CHPOINT '
  238. CALL LIROBJ(TYPE,IMIXT,1,IRET)
  239. IF(IERR .NE. 0) GOTO 9999
  240. MCHPOI = IMIXT
  241. SEGACT MCHPOI
  242. NSOUPO = MCHPOI.IPCHP(/1)
  243. SEGDES MCHPOI
  244. IF(NSOUPO .GT.0)THEN
  245. ELSE
  246. IMIXT=0
  247. ENDIF
  248. ELSE
  249. IMIXT=0
  250. C
  251. C********** Je m'excuse et je le remets dans la pile
  252. C
  253. CALL REFUS
  254. ENDIF
  255. ELSE
  256. IMIXT=0
  257. ENDIF
  258. C
  259. C Température imposée
  260. C
  261. CALL LIRCHA(MOT,0,IRET)
  262. IF(IRET .NE. 0)THEN
  263. IF(MOT .EQ. 'TIMP')THEN
  264. TYPE='CHPOINT '
  265. CALL LIROBJ(TYPE,ITIMP,1,IRET)
  266. IF(IERR .NE. 0) GOTO 9999
  267. MCHPOI = ITIMP
  268. SEGACT MCHPOI
  269. NSOUPO = MCHPOI.IPCHP(/1)
  270. SEGDES MCHPOI
  271. IF(NSOUPO .GT.0)THEN
  272. JGN = 4
  273. JGM = 1
  274. SEGINI MLMNOM
  275. MLMNOM.MOTS(1) = 'SCAL'
  276. CALL QUEPO1(ITIMP, 0, MLMNOM)
  277. IF(IERR .NE. 0) GOTO 9999
  278. SEGSUP MLMNOM
  279. ELSE
  280. ITIMP=0
  281. ENDIF
  282. ELSE
  283. ITIMP=0
  284. C
  285. C********** Je m'excuse et je le remets dans la pile
  286. C
  287. CALL REFUS
  288. ENDIF
  289. ELSE
  290. ITIMP=0
  291. ENDIF
  292. C
  293. C
  294. C
  295. C Test des données
  296. C
  297. IF (.NOT.LOGIMP.AND.(ITIMP.NE.0)) THEN
  298. C**** La temperature imposéé à la paroi ne serve pas dans le
  299. C cas de proprietés physiques constantes en explicite
  300. MESERR='TIMP = ??? '
  301. WRITE(IOIMP,*) MESERR
  302. C********** Message d'erreur standard
  303. C 21 2
  304. C Données incompatibles
  305. C
  306. CALL ERREUR(21)
  307. GOTO 9999
  308. ENDIF
  309. C
  310. c CALL GIBTEM(XKT)
  311. c WRITE(6,*) 'XKT1=',XKT
  312. IF (LOGIMP) THEN
  313. c IF (IDIM.EQ.2) THEN
  314. CALL YLAP1T(ITN,ICOGRT,
  315. $ ITIMP,IQIMP,IMIXT,
  316. $ MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPVO,IJACO)
  317. c ELSEIF (IDIM.EQ.3) THEN
  318. c CALL YLAP2T(MU,KAPPA,CV,IRN,IVN,ITN,
  319. c $ IGRVN,ICOGRV,ICOGRT,
  320. c $ IVNIMP,ITAUIM,ITIMP,IQIMP,IMIXT,
  321. c $ MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPVO,MLMOTS,
  322. c $ IJACO)
  323. c ELSE
  324. c WRITE(IOIMP,*) 'IDIM=',IDIM,' ILLICITE.'
  325. c CALL ERREUR(5)
  326. c GOTO 9999
  327. c ENDIF
  328.  
  329. ELSE
  330. C
  331. C******* Objet MATRIK vide en explicite
  332. C
  333. NRIGE=7
  334. NMATRI=0
  335. NKID =9
  336. NKMT =7
  337. SEGINI MATRIK
  338. SEGDES MATRIK
  339. IJACO = MATRIK
  340. ENDIF
  341. C
  342. C**** Creation des flux aux interfaces
  343. C
  344. JGN=4
  345. JGM=1
  346. SEGINI MLDEFO
  347. DO ICELL=1,1,1
  348. MLDEFO.MOTS(ICELL)='RETN'
  349. ENDDO
  350. TYPE = 'CHPOINT '
  351. CALL KRCHP1(TYPE, MELEMF, ICHFLU, MLDEFO)
  352. CALL GIBTEM(XKT)
  353. C
  354. C**** Calcul des flux et du pas du temps.
  355. C
  356. c IF(IDIM.EQ.2)THEN
  357. CALL YLA12T(IGRTN,IQIMP,MELEMC,MELEMF,MELEFL,
  358. & ICHPSU,INORM,ICHPDI,ICHFLU,DELTAT)
  359. CALL GIBTEM(XKT)
  360. c ELSE
  361. c CALL YLAP13T(MU,KAPPA,CV,IRN,IVN,IGRVN,IGRTN,
  362. c & IVNIMP,ITAUIM,IQIMP,
  363. c & MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPDI,ICHFLU,DELTAT)
  364. c ENDIF
  365. IF(IERR .NE. 0)GOTO 9999
  366. C
  367. C**** Calcul de residu (si LOGRES = .TRUE.)
  368. C
  369. IF(LOGRES)THEN
  370. TYPE = 'CHPOINT '
  371. CALL KRCHP1(TYPE, MELEMC, ICHRES, MLDEFO)
  372. IF(IERR.NE.0) GOTO 9999
  373. C
  374. c CALL GIBTEM(XKT)
  375. c WRITE(6,*) 'XKT3=',XKT
  376. CALL KONRE1(MELEMC,MELEMF,MELEFL,ICHPVO,
  377. & ICHFLU, ICHRES,
  378. & LOGAN,MESERR)
  379. IF(LOGAN)THEN
  380. C
  381. C******* Anomalie detectée
  382. C
  383. C
  384. C******* Message d'erreur standard
  385. C -301 0
  386. C %m1:40
  387. C
  388. MOTERR(1:40) = MESERR(1:40)
  389. WRITE(IOIMP,*) MOTERR(1:40)
  390. C
  391. C******* Message d'erreur standard
  392. C 5 3
  393. C Erreur anormale.contactez votre support
  394. C
  395. CALL ERREUR(5)
  396. GOTO 9999
  397. ENDIF
  398. ELSE
  399. SEGSUP MLDEFO
  400. ICHRES = 0
  401. ENDIF
  402.  
  403. C
  404. C**** Sortie
  405. C
  406. CALL ECRREE(DELTAT)
  407. TYPE = 'CHPOINT '
  408. IF(ICHRES .NE. 0) CALL ECROBJ(TYPE,ICHRES)
  409. IF(ICHFLU .NE. 0) CALL ECROBJ(TYPE,ICHFLU)
  410. TYPE='MATRIK '
  411. CALL ECROBJ(TYPE,IJACO)
  412. C
  413. 9999 RETURN
  414. END
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  

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