Télécharger pre11.eso

Retour à la liste

Numérotation des lignes :

pre11
  1. C PRE11 SOURCE OF166741 24/12/13 21:16:58 12097
  2. SUBROUTINE PRE11()
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : PRE11
  8. C
  9. C DESCRIPTION : Voir PRE1
  10. C
  11. C Cas gaz parfait monoespece
  12. C
  13. C 1er ordre en espace, 1er ordre en temps
  14. C
  15. C Creations des object MCHAML IROF, IVITF, IPF,
  16. C IGAMF
  17. C
  18. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  19. C
  20. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  21. C
  22. C************************************************************************
  23. C
  24. C
  25. C APPELES (Outils) : LIRTAB, ACMO, LEKTAB, QUETYP, ERREUR, LIROBJ,
  26. C QUEPOI, ECROBJ
  27. C
  28. C APPELES (Calcul) : PRE111 (2D)
  29. C
  30. C
  31. C************************************************************************
  32. C
  33. C HISTORIQUE (Anomalies et modifications éventuelles)
  34. C
  35. C HISTORIQUE : Créée le 11.6.98.
  36. C
  37. C************************************************************************
  38. C
  39. C**** Les variables
  40. C
  41. IMPLICIT INTEGER(I-N)
  42. INTEGER ICOND, IRETOU, IERR0, INDIC, NBCOMP
  43. & ,IDOMA, ICEN, IFACE, IFACEL, INORM, IROC, IVITC, IPC
  44. & ,IGAMC, IROF, IVITF, IPF, IGAMF, JGN, JGM, INEFMD
  45. & ,MMODEL
  46. REAL*8 VALER, VAL1, VAL2
  47. CHARACTER*(4) NOMTOT(3)
  48. CHARACTER*(8) MTYPR, TYPE
  49. CHARACTER*(40) MESERR
  50. LOGICAL LOGAN,LOGNEG, LOGBOR
  51. C
  52. C**** Les Includes
  53. C
  54.  
  55. -INC PPARAM
  56. -INC CCOPTIO
  57. -INC SMLMOTS
  58. POINTEUR MLMVIT.MLMOTS
  59. C**** Initialisation des parametres d'erreur
  60. C
  61. LOGAN = .FALSE.
  62. LOGNEG = .FALSE.
  63. LOGBOR = .FALSE.
  64. MESERR = ' '
  65. MOTERR(1:40) = MESERR(1:40)
  66. VALER = 0.0D0
  67. VAL1 = 0.0D0
  68. VAL2 = 0.0D0
  69. C
  70. C**** Initialisation des NOMTOT
  71. C
  72. NOMTOT(1) = ' '
  73. NOMTOT(2) = ' '
  74. NOMTOT(3) = ' '
  75. C
  76. C**** Lecture de l'objet MODELE
  77. C
  78. ICOND = 1
  79. CALL QUETYP(TYPE,ICOND,IRETOU)
  80.  
  81. IF(IRETOU.EQ.0.AND.TYPE.NE.'MMODEL')THEN
  82. WRITE(6,*)' On attend un objet MMODEL'
  83. RETURN
  84. ENDIF
  85. CALL LIROBJ('MMODEL ',MMODEL,ICOND,IRETOU)
  86. CALL ACTOBJ('MMODEL ',MMODEL,1)
  87. IF(IERR.NE.0)GOTO 9999
  88. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  89. IF(IERR.NE.0)GOTO 9999
  90. C
  91. C**** Lecture du MELEME SPG des points CENTRE.
  92. C
  93. C
  94. C CALL LEKTAB(IDOMA,'CENTRE',IP)
  95. C
  96. C**** Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  97. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  98. C -> la correspondance global des noeuds saut!
  99. C
  100. C On peut utilizer ACCTAB ou ACMO
  101. C
  102. MTYPR = 'MAILLAGE'
  103. CALL ACMO(IDOMA,'CENTRE',MTYPR,ICEN)
  104. IF(IERR.NE.0)GOTO 9999
  105. C
  106. C**** Lecture du MELEME 'FACE'
  107. C
  108. MTYPR = 'MAILLAGE'
  109. CALL ACMO(IDOMA,'FACE',MTYPR,IFACE)
  110. IF(IERR.NE.0)GOTO 9999
  111. C
  112. C**** Lecture du MELEME 'FACEL'
  113. C
  114. MTYPR = 'MAILLAGE'
  115. CALL ACMO(IDOMA,'FACEL',MTYPR,IFACEL)
  116. IF(IERR.NE.0)GOTO 9999
  117. C
  118. C**** Lecture du CHPOINT contenant les normales aux faces
  119. C
  120. IF(IDIM .EQ. 2)THEN
  121. C Que les normales
  122. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  123. IF(IERR .NE. 0) GOTO 9999
  124. JGN = 4
  125. JGM = 2
  126. SEGINI MLMVIT
  127. MLMVIT.MOTS(1) = 'UX '
  128. MLMVIT.MOTS(2) = 'UY '
  129. CALL QUEPO1(INORM, IFACE, MLMVIT)
  130. SEGSUP MLMVIT
  131. IF(IERR.NE.0)GOTO 9999
  132. ELSE
  133. C Les normales et les tangentes
  134. MTYPR = ' '
  135. CALL ACMO(IDOMA,'MATROT',MTYPR,INORM)
  136. IF (MTYPR .NE. 'CHPOINT ') THEN
  137. CALL MATRAN(IDOMA,INORM)
  138. IF(IERR .NE. 0) GOTO 9999
  139. ENDIF
  140. JGN = 4
  141. JGM = 9
  142. SEGINI MLMVIT
  143. MLMVIT.MOTS(1) = 'UX '
  144. MLMVIT.MOTS(2) = 'UY '
  145. MLMVIT.MOTS(3) = 'UZ '
  146. MLMVIT.MOTS(4) = 'RX '
  147. MLMVIT.MOTS(5) = 'RY '
  148. MLMVIT.MOTS(6) = 'RZ '
  149. MLMVIT.MOTS(7) = 'MX '
  150. MLMVIT.MOTS(8) = 'MY '
  151. MLMVIT.MOTS(9) = 'MZ '
  152. CALL QUEPO1(INORM, IFACE, MLMVIT)
  153. SEGSUP MLMVIT
  154. IF(IERR.NE.0)GOTO 9999
  155. ENDIF
  156. C
  157. C**** Lecture du CHPOINT ROC
  158. C
  159. ICOND = 1
  160. CALL QUETYP(MTYPR,ICOND,IRETOU)
  161. IF(IERR .NE. 0)GOTO 9999
  162. IF(MTYPR .NE. 'CHPOINT ')THEN
  163. C
  164. C******* Message d'erreur standard
  165. C 37 2
  166. C On ne trouve pas d'objet de type %m1:8
  167. C
  168. MOTERR(1:8) = 'CHPOINT '
  169. CALL ERREUR(37)
  170. GOTO 9999
  171. ELSE
  172. ICOND = 1
  173. CALL LIROBJ(MTYPR,IROC,ICOND,IRETOU)
  174. IF(IRETOU .EQ. 1) CALL ACTOBJ(MTYPR,IROC,1)
  175. IF (IERR.NE.0) GOTO 9999
  176. ENDIF
  177. C
  178. C**** Control du CHPOINT: QUEPOI
  179. C
  180. C INDIC = 1 -> on impose le pointeur du support geometrique (IM1)
  181. C INDIC = 0 -> on ne fait que verifier le support geometrique (IM1)
  182. C
  183. C NBCOMP > 0 -> numero des composantes
  184. C
  185. C NOMTOT(1) = ' ' obligatoire s'on connais pas les noms des composantes
  186. C
  187. INDIC = 1
  188. NBCOMP = 1
  189. NOMTOT(1) = 'SCAL'
  190. CALL QUEPOI(IROC, ICEN, INDIC, NBCOMP, NOMTOT)
  191. IF(IERR .NE. 0)THEN
  192. IERR0 = IERR
  193.  
  194. C
  195. C******* Message d'erreur standard
  196. C -301 0 %m1:40
  197. C
  198. MOTERR(1:40) = 'CHPO1 = ??? '
  199. WRITE(IOIMP,*) MOTERR
  200.  
  201. GOTO 9999
  202. ENDIF
  203. C
  204. C**** Lecture du CHPOINT VITC
  205. C
  206. ICOND = 1
  207. CALL QUETYP(MTYPR,ICOND,IRETOU)
  208. IF(IERR .NE. 0)GOTO 9999
  209. IF(MTYPR .NE. 'CHPOINT ')THEN
  210. C
  211. C******* Message d'erreur standard
  212. C 37 2
  213. C On ne trouve pas d'objet de type %m1:8
  214. C
  215. MOTERR(1:8) = 'CHPOINT '
  216. CALL ERREUR(37)
  217. GOTO 9999
  218. ELSE
  219. ICOND = 1
  220. CALL LIROBJ('CHPOINT ',IVITC,ICOND,IRETOU)
  221. CALL ACTOBJ('CHPOINT ',IVITC,1)
  222. IF (IERR.NE.0) GOTO 9999
  223. ENDIF
  224. C
  225. C**** Control du CHPOINT
  226. C
  227. JGN = 4
  228. JGM = IDIM
  229. SEGINI MLMVIT
  230. MLMVIT.MOTS(1) = 'UX '
  231. MLMVIT.MOTS(2) = 'UY '
  232. IF(IDIM .EQ. 3) MLMVIT.MOTS(3) = 'UZ '
  233. CALL QUEPO1(IVITC, ICEN, MLMVIT)
  234. SEGSUP MLMVIT
  235. IF(IERR .NE. 0)THEN
  236. IERR0 = IERR
  237.  
  238. C
  239. C******* Message d'erreur standard
  240. C -301 0 %m1:40
  241. C
  242. MOTERR(1:40) = 'CHPO2 = ??? '
  243. WRITE(IOIMP,*) MOTERR
  244.  
  245. GOTO 9999
  246. ENDIF
  247. C
  248. C**** Lecture du CHPOINT PC
  249. C
  250. ICOND = 1
  251. CALL QUETYP(MTYPR,ICOND,IRETOU)
  252. IF(IERR .NE. 0)GOTO 9999
  253. IF(MTYPR .NE. 'CHPOINT ')THEN
  254. C
  255. C******* Message d'erreur standard
  256. C 37 2
  257. C On ne trouve pas d'objet de type %m1:8
  258. C
  259. MOTERR(1:8) = 'CHPOINT '
  260. CALL ERREUR(37)
  261. GOTO 9999
  262. ELSE
  263. ICOND = 1
  264. CALL LIROBJ('CHPOINT ',IPC,ICOND,IRETOU)
  265. CALL ACTOBJ('CHPOINT ',IPC,1)
  266. IF (IERR.NE.0) GOTO 9999
  267. ENDIF
  268. C
  269. C**** Control du CHPOINT
  270. C
  271. INDIC = 1
  272. NBCOMP = 1
  273. NOMTOT(1) = 'SCAL'
  274. CALL QUEPOI(IPC, ICEN, INDIC, NBCOMP, NOMTOT)
  275. IF(IERR .NE. 0)THEN
  276. IERR0 = IERR
  277.  
  278. C
  279. C******* Message d'erreur standard
  280. C -301 0 %m1:40
  281. C
  282. MOTERR(1:40) = 'CHPO3 = ??? '
  283. WRITE(IOIMP,*) MOTERR
  284.  
  285. GOTO 9999
  286. ENDIF
  287. C
  288. C**** Lecture du CHPOINT GAMC
  289. C
  290. ICOND = 1
  291. CALL QUETYP(MTYPR,ICOND,IRETOU)
  292. IF(IERR .NE. 0)GOTO 9999
  293. IF(MTYPR .NE. 'CHPOINT ')THEN
  294. C
  295. C******* Message d'erreur standard
  296. C 37 2
  297. C On ne trouve pas d'objet de type %m1:8
  298. C
  299. MOTERR(1:8) = 'CHPOINT '
  300. CALL ERREUR(37)
  301. GOTO 9999
  302. ELSE
  303. ICOND = 1
  304. CALL LIROBJ('CHPOINT',IGAMC,ICOND,IRETOU)
  305. CALL ACTOBJ('CHPOINT',IGAMC,1)
  306. IF (IERR.NE.0) GOTO 9999
  307. ENDIF
  308. C
  309. C**** Control du CHPOINT
  310. C
  311. INDIC = 1
  312. NBCOMP = 1
  313. NOMTOT(1) = 'SCAL'
  314. CALL QUEPOI(IGAMC, ICEN, INDIC, NBCOMP, NOMTOT)
  315. IF(IERR .NE. 0)THEN
  316. IERR0 = IERR
  317.  
  318. C
  319. C******* Message d'erreur standard
  320. C -301 0 %m1:40
  321. C
  322. MOTERR(1:40) = 'CHPO4 = ??? '
  323. WRITE(IOIMP,*) MOTERR
  324.  
  325. GOTO 9999
  326. ENDIF
  327. C
  328. C**** Centre -> Face
  329. C
  330. IF(IDIM .EQ. 2)THEN
  331. C
  332. C******* Deux Dimensions, Une Espece, 1er ordre en espace, 1er ordre en
  333. C temps
  334. C
  335. CALL PRE111(ICEN,IFACE,IFACEL,INORM,IROC,IVITC,IPC,IGAMC,
  336. & IROF,IVITF,IPF,IGAMF,
  337. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  338. ELSE
  339. C
  340. C******* Trois Dimensions, Une Espece, 1er ordre en espace, 1er ordre en
  341. C temps
  342. C
  343. C
  344. CALL PRE112(ICEN,IFACE,IFACEL,INORM,IROC,IVITC,IPC,IGAMC,
  345. & IROF,IVITF,IPF,IGAMF,
  346. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  347. ENDIF
  348. C
  349. C**** Messages d'erreur
  350. C
  351. IF(LOGAN)THEN
  352. C
  353. C******* Anomalie detectée
  354. C
  355. C
  356. C******* Message d'erreur standard
  357. C -301 0
  358. C %m1:40
  359. C
  360. MOTERR(1:40) = MESERR(1:40)
  361. WRITE(IOIMP,*) MOTERR
  362. C
  363. C******* Message d'erreur standard
  364. C 5 3
  365. C Erreur anormale.contactez votre support
  366. C
  367. CALL ERREUR(5)
  368. GOTO 9999
  369. C
  370. ELSEIF(LOGNEG)THEN
  371. C
  372. C******* Message d'erreur standard
  373. C 41 2
  374. C %m1:8 = %r1 inférieur à %r2
  375. C
  376. MOTERR(1:8) = MESERR(1:8)
  377. REAERR(1) = REAL(VALER)
  378. REAERR(2) = 0.0
  379. CALL ERREUR(41)
  380. GOTO 9999
  381. ELSEIF(LOGBOR)THEN
  382. C
  383. C******* Message d'erreur standard
  384. C 42 2
  385. C %m1:8 = %r1 non compris entre %r2 et %r3
  386. C
  387. MOTERR(1:8) = MESERR(1:8)
  388. REAERR(1) = REAL(VALER)
  389. REAERR(2) = REAL(VAL1)
  390. REAERR(3) = REAL(VAL2)
  391. CALL ERREUR(42)
  392. GOTO 9999
  393. ELSE
  394. C
  395. C******* Ecriture de ROF, VITF, PF
  396. C
  397. MTYPR = 'MCHAML'
  398. CALL ECROBJ(MTYPR,IGAMF)
  399. CALL ECROBJ(MTYPR,IPF)
  400. CALL ECROBJ(MTYPR,IVITF)
  401. CALL ECROBJ(MTYPR,IROF)
  402. ENDIF
  403. C
  404. 9999 CONTINUE
  405. C
  406. RETURN
  407. END
  408.  
  409.  
  410.  
  411.  

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