Télécharger ckon.eso

Retour à la liste

Numérotation des lignes :

ckon
  1. C CKON SOURCE OF166741 24/12/13 21:15:05 12097
  2. SUBROUTINE CKON(KIZX)
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : CKON
  8. C
  9. C DESCRIPTION : Subroutine appellée par KONV
  10. C
  11. C Modelisation 2D/3D des equations d'Euler
  12. C
  13. C Calcul de flux aux interfaces
  14. C
  15. C LANGUAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  16. C
  17. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  18. C
  19. C************************************************************************
  20. C
  21. C
  22. C APPELES (E/S) : ACMO, ERREUR, ACME, ACMM, LEKTAB, CRTABL, ECMM,
  23. C ECMO, ECMF
  24. C
  25. C
  26. C APPELES (Calcul) : CKON1 (2D, gaz "calorically perfect")
  27. C CKON2 (3D, gaz "calorically perfect")
  28. C CKON3 (2D, gaz "thermally perfect")
  29. C CKON4 (3D, gaz "thermally perfect")
  30. C
  31. C************************************************************************
  32. C
  33. C*** ENTREE
  34. C
  35. C Phrase d'appel (GIBIANE) :
  36. C
  37. C KONV TAB ;
  38. C
  39. C (NB: KIZX qui appairesse dans CKON(KIZX) est le pointeur de la
  40. C table TAB)
  41. C
  42. C La table de sous type KIZX a été généré par EQEX et
  43. C s'appelle RV.*KONV; elle contient differents arguments:
  44. C
  45. C 1) la table RV, généré par EQEX:
  46. C
  47. C KIZX . 'EQEX'
  48. C
  49. C 2) la table des options
  50. C
  51. C KIZX . 'KOPT'
  52. C
  53. C 3) la table domaine de KONV,
  54. C
  55. C KIZX . 'NOMZONE'
  56. C KIZX . 'DOMZ '
  57. C
  58. C 4) tous les inconnues du probleme global
  59. C
  60. C KIZX . 'EQEX' . 'INCO'
  61. C
  62. C 5) la methode de calcul
  63. C
  64. C KIZX . 'KOPT' . 'IDCEN'
  65. C
  66. C 6) mono-espece, multi-especes, multi-especes "thermally perfect"
  67. C
  68. C KIZX . 'KOPT' . 'IDEUL'
  69. C
  70. C
  71. C 7) le variables primales de KONV,
  72. C i.e. les arguments de l'operateur KONV:
  73. C
  74. C KIZX . 'ARG1 '
  75. C
  76. C KIZX . 'ARG2 '
  77. C
  78. C ...
  79. C
  80. C
  81. C 8) la liste des variables duales, i.e. les inconnues traites par
  82. C KONV:
  83. C
  84. C KIZX . 'LISTINCO'
  85. C
  86. C
  87. C**** SORTIE
  88. C
  89. C 1) les Flux aux faces, sont conservés dans la table
  90. C
  91. C KIZX . 'EQEX' . 'KIZG'
  92. C
  93. C 2) la table PASDETPS (***A CHANGER***)
  94. C
  95. C
  96. C***********************************************************************
  97. C
  98. C************************************************************************
  99. C
  100. C HISTORIQUE (Anomalies et modifications éventuelles)
  101. C
  102. C HISTORIQUE :
  103. C
  104. C************************************************************************
  105. C
  106. IMPLICIT INTEGER(I-N)
  107. INTEGER KIZX, IEQEX, IKOPT, IDOMA, INCO
  108. & , IND, INDMET, INDEUL
  109. & , NBRINC
  110. & , NORD, NORDP1, IROF, IVITF, IPF, IGAMF
  111. & , IFRMAF
  112. & , LINCO
  113. & , MELEMC, MELEMF, MELEFE
  114. & , ICHPSU, ICHPDI
  115. & , KIZG, IZG1, IZG2, IZG3, IZG4, IZG5
  116. & , NLCEMI
  117. & , MTABT
  118. & , INDIC, NBCOMP, NESP, IPGAZ, NSCA, ISCAF
  119. & , IRET, IENT, I1, I2, IESP, JGM, JGN
  120. & , N, NAT, NC, NSOUPO, NCELL
  121. C
  122. REAL*8 DT, DIAMEL, XVAL
  123. CHARACTER*(8) TYPE,NOMZ,MOTLU
  124. CHARACTER*(8) ARG
  125. CHARACTER*(40) MESERR
  126. CHARACTER*(4) NOMTOT(2)
  127. LOGICAL LOGME, LOGNC, LOGAN, XLOGI, LOGSCA
  128. C
  129. C**** Variables en ACCTAB
  130. C
  131. INTEGER IVALI, IRETI,IVALR, IRETR, MMODEL, INEFMD
  132. REAL*8 XVALI, XVALR
  133. LOGICAL LOGII, LOGIR
  134. CHARACTER*(8) MTYPI, MTYPR, CHARR
  135. C
  136. C**** Segment des proprietes du gaz
  137. C
  138. SEGMENT PROPHY
  139. REAL*8 ACV(NORDP1,NESP+1), R(NESP+1), H0K(NESP+1)
  140. & ,ACVTOG(NORDP1), ACVTOD(NORDP1)
  141. ENDSEGMENT
  142. C
  143. C**** Les Includes.
  144. C
  145.  
  146. -INC PPARAM
  147. -INC CCOPTIO
  148. -INC SMCHPOI
  149. -INC SMLMOTS
  150. POINTEUR MLMOEU.MLMOTS, MLMOSC.MLMOTS
  151. -INC SMLREEL
  152. -INC SMELEME
  153. C
  154. C**** Initialisation des variables pour la gestion des erreurs.
  155. C
  156. LOGNC = .FALSE.
  157. LOGAN = .FALSE.
  158. MESERR = ' '
  159.  
  160. C
  161. C**** Lecture de KIZX . 'EQEX'. (C'est le pointeur de la table RV)
  162. C
  163. IEQEX = 0
  164. TYPE = 'TABLE '
  165. CALL ACMO(KIZX,'EQEX',TYPE,IEQEX)
  166. IF(IERR .NE. 0) GOTO 9999
  167. IF(TYPE .NE. 'TABLE ')THEN
  168. MOTERR(1:40) = 'EULER, subroutine ckon.eso, EQEX = ? '
  169. C
  170. C******* Message d'erreur standard
  171. C -301 0 %m1:40
  172. C
  173. CALL ERREUR(-301)
  174. C
  175. C******* Message d'erreur standard
  176. C 21 2
  177. C Données incompatibles
  178. C
  179. CALL ERREUR(21)
  180. GO TO 9999
  181. ENDIF
  182. C
  183. C**** Lecture de KIZX . 'KOPT' (les optiones de KONV)
  184. C
  185. IKOPT = 0
  186. TYPE = 'TABLE '
  187. CALL ACMO(KIZX,'KOPT',TYPE,IKOPT)
  188. IF(IERR .NE. 0) GOTO 9999
  189. IF(TYPE .NE. 'TABLE ')THEN
  190. MOTERR(1:40) = 'EULER, subroutine ckon.eso, EQEX = ? '
  191. C
  192. C******* Message d'erreur standard
  193. C -301 0 %m1:40
  194. C
  195. CALL ERREUR(-301)
  196. C
  197. C On EQEX on a pas controlles qu'il n'y a pas KOPT
  198. C
  199. C******* Message d'erreur standard
  200. C 5 3
  201. C Erreur anormale.contactez votre support
  202. C
  203. CALL ERREUR(5)
  204. GO TO 9999
  205. ENDIF
  206. C
  207. C**** Lecture de KIZX . 'NOMZONE' (le domaine de KONV: le nom)
  208. C
  209. CALL ACMM(KIZX,'NOMZONE',NOMZ)
  210. IF(IERR .NE. 0)GOTO 9999
  211. C
  212. C**** Lecture de KIZX . 'DOMZ ' (le domaine de KONV: le pointeur)
  213. C
  214. IDOMA = 0
  215. TYPE = ' '
  216. CALL ACMO(KIZX,'DOMZ ',TYPE,MMODEL)
  217. IF(IERR .NE. 0) GOTO 9999
  218. IF(TYPE .NE. 'MMODEL ')THEN
  219. MOTERR(1:40) = 'EULER, subroutine ckon.eso, ZONE = ? '
  220. C
  221. C******* Message d'erreur standard
  222. C -301 0 %m1:40
  223. C
  224. CALL ERREUR(-301)
  225. C
  226. C******* Message d'erreur standard
  227. C 5 3
  228. C Erreur anormale.contactez votre support
  229. C
  230. CALL ERREUR(5)
  231. GO TO 9999
  232. ELSE
  233. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  234. ENDIF
  235. C
  236. C**** Lecture de KIZX . 'EQEX' . 'INCO'.
  237. C Le pointeur de la table qui contient toutes les inconnues du
  238. C probleme
  239. C
  240. TYPE = 'TABLE '
  241. CALL ACMO(IEQEX,'INCO',TYPE,INCO)
  242. IF(IERR .NE. 0) GOTO 9999
  243. IF(TYPE .NE. 'TABLE ')THEN
  244. MOTERR(1:40) = 'EULER, subroutine ckon.eso, INCO = ? '
  245. C
  246. C******* Message d'erreur standard
  247. C -301 0 %m1:40
  248. C
  249. CALL ERREUR(-301)
  250. C
  251. C******* Message d'erreur standard
  252. C 21 2
  253. C Données incompatibles
  254. C
  255. CALL ERREUR(21)
  256. GO TO 9999
  257. ENDIF
  258. C
  259. C
  260. C**** Model de gaz:
  261. C EULER mono-espece "calorically perfect" (IDEUL = 1)
  262. C EULER multi-espece "calorically perfect" (IDEUL = 2)
  263. C EULER multi-espece "thermally perfect" (IDEUL = 3)
  264. C
  265. CALL ACME(IKOPT,'IDEUL',INDEUL)
  266. IF(IERR .NE. 0) GOTO 9999
  267. IF((INDEUL .LT. 1) .OR. (INDEUL .GT. 3))THEN
  268. MOTERR(1:40) = 'EULER, subroutine ckon.eso, IDEUL = ? '
  269. C
  270. C******** Message d'erreur standard
  271. C -301 0 %m1:40
  272. C
  273. CALL ERREUR(-301)
  274. C
  275. C******* Message d'erreur standard
  276. C 5 3
  277. C Erreur anormale.contactez votre support
  278. C
  279. CALL ERREUR(5)
  280. GOTO 9999
  281. ENDIF
  282. IF(INDEUL .LE. 2)THEN
  283. C
  284. C*******************************************************************
  285. C******************* GAZ CALORICALLY PERFECT ***********************
  286. C*******************************************************************
  287. C
  288. IF(INDEUL .EQ.1)THEN
  289. LOGME = .FALSE.
  290. ELSE
  291. LOGME = .TRUE.
  292. ENDIF
  293. C
  294. C******* Lecture des options de KONV dans KIZX . 'KOPT'
  295. C
  296. C******* Metode utilisée
  297. C
  298. CALL ACME(IKOPT,'IDCEN',IND)
  299. IF(IERR .NE. 0) GOTO 9999
  300. IF(IND .EQ. 9)THEN
  301. C
  302. C********** GODUNOV
  303. C
  304. INDMET = 1
  305. ELSEIF(IND .EQ. 10)THEN
  306. C
  307. C********** Van Leer FVS
  308. C
  309. INDMET = 2
  310. ELSEIF(IND .EQ. 11)THEN
  311. C
  312. C********** Van Leer-HANEL FVS
  313. C
  314. INDMET = 3
  315. ELSEIF(IND .EQ. 12)THEN
  316. C
  317. C********** HUS (Van Leer FVS + Osher FDS)
  318. C
  319. INDMET = 4
  320. ELSEIF(IND .EQ. 13)THEN
  321. C
  322. C********** HUS (Van Leer-HANEL FVS + Osher FDS)
  323. C
  324. INDMET = 5
  325. ELSEIF(IND .EQ. 14)THEN
  326. C
  327. C********** AUSM
  328. C
  329. C INDMET = 6
  330. C ELSE
  331. C
  332. C********** Message d'erreur standard
  333. C 251 2
  334. C Tentative d'utilisation d'une option non implémentée
  335. C
  336. CALL ERREUR(251)
  337. ENDIF
  338. C
  339. C******* Lecture des arguments de KONV KIZX . 'ARG*'
  340. C
  341. C Lecture du MCHAML 'FACEL' contenant la masse volumique.
  342. C
  343. C D'abord on va lire son nom in KIZX . 'ARG1 ' -> MOTLU
  344. C
  345. MOTLU=' '
  346. CALL ACMM(KIZX,'ARG1 ',MOTLU)
  347. IF(IERR.NE.0) GOTO 9999
  348. C
  349. C******* On va lire le pointeur du MCHAML
  350. C
  351. TYPE='MCHAML '
  352. CALL ACMO(INCO,MOTLU,TYPE,IROF)
  353. IF(IERR.NE.0) GOTO 9999
  354. IF(TYPE .NE. 'MCHAML ')THEN
  355. C
  356. C********** Message d'erreur standard
  357. C 37 2
  358. C On ne trouve pas d'objet de type %m1:8
  359. C
  360. MOTERR(1:8) = 'MCHAML '
  361. CALL ERREUR(37)
  362. GOTO 9999
  363. ENDIF
  364. C
  365. C******* Lecture du MCHAML 'FACEL' vitesse
  366. C
  367. MOTLU=' '
  368. CALL ACMM(KIZX,'ARG2 ',MOTLU)
  369. IF(IERR.NE.0)GOTO 9999
  370. C
  371. TYPE='MCHAML '
  372. CALL ACMO(INCO,MOTLU,TYPE,IVITF)
  373. IF(IERR .NE. 0) GOTO 9999
  374. IF(TYPE .NE. 'MCHAML ')THEN
  375. C
  376. C********** Message d'erreur standard
  377. C 37 2
  378. C On ne trouve pas d'objet de type %m1:8
  379. C
  380. MOTERR(1:8) = 'MCHAML '
  381. CALL ERREUR(37)
  382. GOTO 9999
  383. ENDIF
  384. C
  385. C******** Lecture du MCHAML 'FACEL' contenant la pression
  386. C
  387. MOTLU=' '
  388. CALL ACMM(KIZX,'ARG3 ',MOTLU)
  389. IF(IERR .NE. 0) GOTO 9999
  390. C
  391. TYPE='MCHAML '
  392. CALL ACMO(INCO,MOTLU,TYPE,IPF)
  393. IF(IERR .NE. 0) GOTO 9999
  394. IF(TYPE .NE. 'MCHAML ')THEN
  395. C
  396. C********** Message d'erreur standard
  397. C 37 2
  398. C On ne trouve pas d'objet de type %m1:8
  399. C
  400. MOTERR(1:8) = 'MCHAML '
  401. CALL ERREUR(37)
  402. GOTO 9999
  403. ENDIF
  404. C
  405. C******* Lecture du MCHAML 'FACEL' contenant les gamma
  406. C
  407. MOTLU=' '
  408. CALL ACMM(KIZX,'ARG4 ',MOTLU)
  409. IF(IERR .NE. 0) GOTO 9999
  410. C
  411. TYPE='MCHAML '
  412. CALL ACMO(INCO,MOTLU,TYPE,IGAMF)
  413. IF(IERR .NE. 0) GOTO 9999
  414. IF(TYPE .NE. 'MCHAML ')THEN
  415. C
  416. C********** Message d'erreur standard
  417. C 37 2
  418. C On ne trouve pas d'objet de type %m1:8
  419. C
  420. MOTERR(1:8) = 'MCHAML '
  421. CALL ERREUR(37)
  422. GOTO 9999
  423. ENDIF
  424. C
  425. C******* Si LOGME -> MULTIESPECES
  426. C
  427. IF(LOGME)THEN
  428. C
  429. C********** Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  430. C
  431. MOTLU=' '
  432. CALL ACMM(KIZX,'ARG5 ',MOTLU)
  433. IF(IERR .NE. 0) GOTO 9999
  434. C
  435. TYPE='MCHAML '
  436. CALL ACMO(INCO,MOTLU,TYPE,IFRMAF)
  437. IF(IERR .NE. 0) GOTO 9999
  438. IF(TYPE .NE. 'MCHAML ')THEN
  439. C
  440. C********** Message d'erreur standard
  441. C 37 2
  442. C On ne trouve pas d'objet de type %m1:8
  443. C
  444. MOTERR(1:8) = 'MCHAML '
  445. CALL ERREUR(37)
  446. GOTO 9999
  447. ENDIF
  448. C
  449. C********** Lecture de la table qui contient le proprieté du gaz
  450. C
  451. MOTLU=' '
  452. CALL ACMM(KIZX,'ARG6 ',MOTLU)
  453. IF(IERR .NE. 0) GOTO 9999
  454. C
  455. TYPE='TABLE '
  456. CALL ACMO(INCO,MOTLU,TYPE,IPGAZ)
  457. IF(IERR .NE. 0) GOTO 9999
  458. IF(TYPE .NE. 'TABLE ')THEN
  459. C
  460. C************* Message d'erreur standard
  461. C 37 2
  462. C On ne trouve pas d'objet de type %m1:8
  463. C
  464. MOTERR(1:8) = 'TABLE '
  465. CALL ERREUR(37)
  466. GOTO 9999
  467. ENDIF
  468. ENDIF
  469. C
  470. C******* Lecture de Nom des Inconnues de KONV (KIZX . 'LISTINCO')
  471. C
  472. TYPE='LISTMOTS'
  473. CALL ACMO(KIZX,'LISTINCO',TYPE,LINCO)
  474. MLMOT1 = LINCO
  475. IF(IERR.NE.0)GOTO 9999
  476. SEGACT MLMOT1
  477. C
  478. C******* Verification du Nombre d'inconnues.
  479. C
  480. C Eulero mono-especie -> NBRINC = 3
  481. C Eulero multi-especies -> NBRINC = 4
  482. C
  483. NBRINC = MLMOT1.MOTS(/2)
  484. IF(LOGME)THEN
  485. IF(NBRINC .NE. 4)THEN
  486. C
  487. C************* Message d'erreur standard
  488. C -301 0 %m1:40
  489. C
  490. MOTERR(1:40) = 'EULERMS: LISTINCO = ? '
  491. CALL ERREUR(-301)
  492. C
  493. C************* Message d'erreur standard
  494. C 21 2 Données incompatibles
  495. C
  496. CALL ERREUR(21)
  497. GO TO 9999
  498. ENDIF
  499. ELSEIF(NBRINC .NE. 3)THEN
  500. C
  501. C********** Message d'erreur standard
  502. C -301 0 %m1:40
  503. C
  504. MOTERR(1:40) = 'EULER: LISTINCO = ? '
  505. CALL ERREUR(-301)
  506. C
  507. C********** Message d'erreur standard
  508. C 21 2 Données incompatibles
  509. C
  510. CALL ERREUR(21)
  511. GO TO 9999
  512. ENDIF
  513. C
  514. C
  515. C******* Table DOMAINE en IDOMA (pointeur de la zone de KONV)
  516. C
  517. C
  518. C******* Lecture du MELEME SPG des points CENTRE.
  519. C
  520. C
  521. C CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  522. C
  523. C******* Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  524. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  525. C -> la correspondance global des noeuds saut!
  526. C
  527. C On peut utilizer ACCTAB ou ACMO
  528. C
  529. TYPE = 'MAILLAGE'
  530. CALL ACMO(IDOMA,'CENTRE',TYPE,MELEMC)
  531. IF(IERR .NE. 0) GOTO 9999
  532. IF(TYPE .NE. 'MAILLAGE')THEN
  533. MOTERR(1:8) = NOMZ
  534. MOTERR(9:40) = ' . CENTRE = ? '
  535. C
  536. C********** Message d'erreur standard
  537. C -301 0 %m1:40
  538. C
  539. CALL ERREUR(-301)
  540. C
  541. C********** Message d'erreur standard
  542. C 21 2
  543. C Données incompatibles
  544. C
  545. CALL ERREUR(21)
  546. GO TO 9999
  547. ENDIF
  548. C
  549. C******* Lecture du MELEME 'FACE' SPG des points FACE
  550. C
  551. CALL ACMO(IDOMA,'FACE',TYPE,MELEMF)
  552. IF(IERR .NE. 0) GOTO 9999
  553. IF(TYPE .NE. 'MAILLAGE')THEN
  554. MOTERR(1:8) = NOMZ
  555. MOTERR(9:40) = ' . FACE = ? '
  556. C
  557. C********** Message d'erreur standard
  558. C -301 0 %m1:40
  559. C
  560. CALL ERREUR(-301)
  561. C
  562. C********** Message d'erreur standard
  563. C 21 2
  564. C Données incompatibles
  565. C
  566. CALL ERREUR(21)
  567. GO TO 9999
  568. ENDIF
  569. C
  570. C******* Lecture du MELEME 'FACEL' de connect. FACE -> CENTRE
  571. C
  572. CALL ACMO(IDOMA,'FACEL',TYPE,MELEFE)
  573. IF(IERR .NE. 0) GOTO 9999
  574. IF(TYPE .NE. 'MAILLAGE')THEN
  575. MOTERR(1:8) = NOMZ
  576. MOTERR(9:40) = ' . FACEL = ? '
  577. C
  578. C******* Message d'erreur standard
  579. C -301 0 %m1:40
  580. C
  581. CALL ERREUR(-301)
  582. C
  583. C******* Message d'erreur standard
  584. C 21 2
  585. C Données incompatibles
  586. C
  587. CALL ERREUR(21)
  588. GO TO 9999
  589. ENDIF
  590. C
  591. C**** Lecture du CHPOINT contenant les surfaces des faces.
  592. C
  593. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  594. IF(IERR .NE. 0) GOTO 9999
  595. C
  596. C**** Lecture du CHPOINT contenant les diametres minimums.
  597. C
  598. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  599. IF(IERR .NE. 0) GOTO 9999
  600. C
  601. C
  602. C**** Lecture de la TABLE contenant les FLUX aux interfaces,
  603. C i.e. KIZX . 'EQEX' . 'KIZG'
  604. C
  605. C N.B. On recuper le pointeur des flux relatives aux
  606. C inconnues de KONV.
  607. C
  608. TYPE= ' '
  609. CALL ACMO(IEQEX,'KIZG',TYPE,KIZG)
  610. IF(IERR .NE. 0) GOTO 9999
  611. IF(TYPE .NE. 'TABLE ')THEN
  612. CALL CRTABL(KIZG)
  613. CALL ECMM(KIZG,'SOUSTYPE','KIZG')
  614. CALL ECMO(IEQEX,'KIZG','TABLE ',KIZG)
  615. ENDIF
  616. C
  617. C**** Creation des CHPOINTs increment IZG1-2-3-4 pour les FLUX
  618. C ou extraction des leurs pointeurs
  619. C
  620. C
  621. C**** La masse volumique
  622. C
  623. C
  624. TYPE=' '
  625. ARG = MLMOT1.MOTS(1)
  626. CALL ACMO(KIZG,ARG,TYPE,IZG1)
  627. IF(IERR .NE. 0) GOTO 9999
  628. IF(TYPE .NE. 'CHPOINT ')THEN
  629. TYPE = 'FACE'
  630. NBCOMP = 1
  631. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG1)
  632. IF(IERR .NE. 0)GOTO 9999
  633. C
  634. C******* Stokage du pointeur dans KIZG
  635. C
  636. ARG = MLMOT1.MOTS(1)
  637. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG1)
  638. ELSE
  639. INDIC = 1
  640. NBCOMP = 1
  641. NOMTOT(1) = ' '
  642. CALL QUEPOI(IZG1,MELEMF,INDIC,NBCOMP,NOMTOT)
  643. IF(IERR .NE. 0)GOTO 9999
  644. ENDIF
  645. C
  646. C**** Les debits
  647. C
  648. TYPE=' '
  649. ARG = MLMOT1.MOTS(2)
  650. CALL ACMO(KIZG,ARG,TYPE,IZG2)
  651. IF(IERR .NE. 0) GOTO 9999
  652. IF(TYPE .NE. 'CHPOINT ')THEN
  653. TYPE='FACE'
  654. NBCOMP = IDIM
  655. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG2)
  656. IF(IERR .NE. 0) GOTO 9999
  657. C
  658. C******* Stokage du pointeur dans KIZG
  659. C
  660. ARG = MLMOT1.MOTS(2)
  661. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG2)
  662. ELSE
  663. INDIC = 1
  664. NBCOMP = IDIM
  665. NOMTOT(1) = ' '
  666. CALL QUEPOI(IZG2,MELEMF,INDIC,NBCOMP,NOMTOT)
  667. IF(IERR .NE. 0)GOTO 9999
  668. ENDIF
  669. C
  670. C**** L'energie totale volumique
  671. C
  672. TYPE=' '
  673. ARG = MLMOT1.MOTS(3)
  674. CALL ACMO(KIZG,ARG,TYPE,IZG3)
  675. IF(IERR .NE. 0) GOTO 9999
  676. IF(TYPE .NE. 'CHPOINT ')THEN
  677. TYPE='FACE'
  678. NBCOMP = 1
  679. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG3)
  680. IF(IERR .NE. 0) GOTO 9999
  681. C
  682. C******* Stokage du pointeur dans KIZG
  683. C
  684. ARG = MLMOT1.MOTS(3)
  685. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG3)
  686. ELSE
  687. INDIC = 1
  688. NBCOMP = 1
  689. NOMTOT(1) = ' '
  690. CALL QUEPOI(IZG3,MELEMF,INDIC,NBCOMP,NOMTOT)
  691. IF(IERR .NE. 0)GOTO 9999
  692. ENDIF
  693. C
  694. C**** Les Masses Volumiques
  695. C
  696. IF(LOGME)THEN
  697. C
  698. C******* D'abord on extrait de la table de pointeur IPGAZ
  699. C la liste des especes splittes dans les equations
  700. C d'Euler
  701. C
  702. TYPE=' '
  703. CALL ACMO(IPGAZ,'ESPEULE ',TYPE,MLMOT2)
  704. IF(IERR .NE. 0) GOTO 9999
  705. IF(TYPE .NE. 'LISTMOTS')THEN
  706. C
  707. C********** Message d'erreur standard
  708. C -301 0 %m1:40
  709. C
  710. MOTERR(1:40) = 'KONV, ARG6 . ESPEULE = ??? '
  711. CALL ERREUR(-301)
  712. C
  713. C********** Message d'erreur standard
  714. C 21 2
  715. C Données incompatibles
  716. C
  717. CALL ERREUR(21)
  718. GOTO 9999
  719. ENDIF
  720. C
  721. SEGACT MLMOT2
  722. NESP = MLMOT2.MOTS(/2)
  723. C
  724. TYPE=' '
  725. ARG = MLMOT1.MOTS(4)
  726. CALL ACMO(KIZG,ARG,TYPE,IZG4)
  727. IF(IERR .NE. 0) GOTO 9999
  728. IF(TYPE .NE. 'CHPOINT ')THEN
  729. NBCOMP = NESP
  730. TYPE='FACE '
  731. C
  732. C********** On cree le chpoint FACE
  733. C
  734. IPT1 = MELEMF
  735. SEGACT IPT1
  736. N=IPT1.NUM(/2)
  737. SEGDES IPT1
  738. NSOUPO=1
  739. NAT=1
  740. NC = NESP
  741. SEGINI, MCHPOI,MSOUPO,MPOVAL
  742. MCHPOI.JATTRI(1)=2
  743. MCHPOI.IFOPOI=IFOUR
  744. MCHPOI.MTYPOI=TYPE
  745. MCHPOI.MOCHDE(1:30)=' '
  746. MCHPOI.MOCHDE(31:60)=' '
  747. MCHPOI.MOCHDE(61:72)=' '
  748. MCHPOI.IPCHP(1)=MSOUPO
  749. SEGDES MCHPOI
  750. MSOUPO.IGEOC=MELEMF
  751. MSOUPO.IPOVAL=MPOVAL
  752. DO I1 = 1, NC
  753. MSOUPO.NOCOMP(I1) = MLMOT2.MOTS(I1)
  754. ENDDO
  755. SEGDES, MSOUPO,MPOVAL
  756. IZG4 = MCHPOI
  757. C
  758. C********** Stokage du pointeur dans KIZG
  759. C
  760. ARG = MLMOT1.MOTS(4)
  761. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG4)
  762. ELSE
  763. INDIC = 1
  764. NBCOMP = NESP
  765. NOMTOT(1) = ' '
  766. CALL QUEPOI(IZG4,MELEMF,INDIC,NBCOMP,NOMTOT)
  767. IF(IERR .NE. 0)GOTO 9999
  768. ENDIF
  769. SEGDES MLMOT2
  770. ENDIF
  771.  
  772. C
  773. C**** Calcul des flux et du pas du temps.
  774. C
  775. IF( IDIM .EQ. 2)THEN
  776. CALL CKON1(LOGME,INDMET,
  777. & IROF,IVITF,IPF,IGAMF,IFRMAF,
  778. & ICHPSU,ICHPDI,
  779. & MELEMC,MELEMF,MELEFE,
  780. & IZG1,IZG2,IZG3,IZG4,DT,DIAMEL,NLCEMI,
  781. & LOGNC,LOGAN,MESERR)
  782. ELSE
  783. CALL CKON2(LOGME,INDMET,
  784. & IROF,IVITF,IPF,IGAMF,IFRMAF,
  785. & ICHPSU,ICHPDI,
  786. & MELEMC,MELEMF,MELEFE,
  787. & IZG1,IZG2,IZG3,IZG4,DT,DIAMEL,NLCEMI,
  788. & LOGNC,LOGAN,MESERR)
  789. ENDIF
  790. C
  791. IF(LOGAN)THEN
  792. C
  793. C******* Anomalie detectée
  794. C
  795. C
  796. C******* Message d'erreur standard
  797. C -301 0
  798. C %m1:40
  799. C
  800. MOTERR(1:40) = MESERR(1:40)
  801. CALL ERREUR(-301)
  802. C
  803. C******* Message d'erreur standard
  804. C 5 3
  805. C Erreur anormale.contactez votre support
  806. C
  807. CALL ERREUR(5)
  808. GOTO 9999
  809. ENDIF
  810. IF(LOGNC)THEN
  811. C
  812. C******* Message d'erreur standard
  813. C -301 0
  814. C %m1:40
  815. C
  816. MOTERR(1:40) = MESERR(1:40)
  817. CALL ERREUR(-301)
  818. C
  819. C******* Message d'erreur standard
  820. C 460 2
  821. C Pas de convergence dans les itérations internes
  822. C
  823. CALL ERREUR(460)
  824. GOTO 9999
  825. ENDIF
  826. C
  827. C**** Ecriture des RESULTATS
  828. C
  829. TYPE = 'TABLE '
  830. CALL ACMO(IEQEX,'PASDETPS',TYPE,MTABT)
  831. IF(IERR .NE. 0) GOTO 9999
  832. IF(TYPE .NE. 'TABLE ')THEN
  833. MOTERR(1:40) = 'EULER, subroutine ckon.eso, PASDETPS = ?'
  834. C
  835. C******* Message d'erreur standard
  836. C -301 0 %m1:40
  837. C
  838. CALL ERREUR(-301)
  839. C
  840. C******* Message d'erreur standard
  841. C 5 3
  842. C Erreur anormale.contactez votre support
  843. C
  844. CALL ERREUR(5)
  845. GO TO 9999
  846. ENDIF
  847. C
  848. C******* On remplie la table d'indice PASDETPS
  849. C
  850. CALL ECMF(MTABT,'DELTAT',DT)
  851. CALL ECMM(MTABT,'OPER','KONV')
  852. CALL ECMM(MTABT,'ZONE',NOMZ)
  853. CALL ECMF(MTABT,'DTCONV',DT)
  854. CALL ECMF(MTABT,'DTDIFU',1.0D50)
  855. CALL ECMF(MTABT,'DIAEL',DIAMEL)
  856. CALL ECME(MTABT,'NUEL',NLCEMI)
  857. C
  858. C**** Ecriture des CHPOINTs increments dans la table KIZG
  859. C déjà faite
  860. C
  861. SEGDES MLMOT1
  862. C
  863. ELSE
  864. C*******************************************************************
  865. C*******************************************************************
  866. C******************* GAZ THERMALLY PERFECT *************************
  867. C*******************************************************************
  868. C*******************************************************************
  869. C
  870. C*****************************
  871. C******* Metode utilisée *****
  872. C*****************************
  873. C
  874. C******* Metode utilisée
  875. C
  876. CALL ACME(IKOPT,'IDCEN',IND)
  877. IF(IERR .NE. 0) GOTO 9999
  878. C
  879. C IND METHODE (voir EQEX)
  880. C
  881. C 9 GODUNOV
  882. C 10 VANLEER (Van Leer FVS)
  883. C 11 VLH (Van Leer-HANEL FVS)
  884. C 12 HUSVL (Van Leer FVS + Osher FDS))
  885. C 13 HUSVLH (Van Leer-HANEL FVS + Osher FDS)
  886. C 14 AUSM (AUSM+, de Liou)
  887. C 15 CG (Colella-Glaz)
  888. C Pour l'instant van Leer - Hanel, Colella-Glaz
  889. C
  890. IF(IND .EQ. 11)THEN
  891. INDMET = 1
  892. ELSEIF(IND .EQ. 15)THEN
  893. INDMET = 2
  894. ELSE
  895. C
  896. C********** Message d'erreur standard
  897. C 251 2
  898. C Tentative d'utilisation d'une option non implémentée
  899. C
  900. CALL ERREUR(251)
  901. ENDIF
  902. C
  903. C********************************************************
  904. C******* Lecture des arguments de KONV KIZX . 'ARG*'*****
  905. C********************************************************
  906. C
  907. C
  908. C**** Lecture de la table qui contient le proprieté du gaz
  909. C Cette table est controlle par l'operateur PRIM
  910. C
  911. MOTLU=' '
  912. CALL ACMM(KIZX,'ARG1 ',MOTLU)
  913. IF(IERR .NE. 0) GOTO 9999
  914. C
  915. TYPE='TABLE '
  916. CALL ACMO(INCO,MOTLU,TYPE,IPGAZ)
  917. IF(IERR .NE. 0) GOTO 9999
  918. IF(TYPE .NE. 'TABLE ')THEN
  919. C
  920. C******* Message d'erreur standard
  921. C 37 2
  922. C On ne trouve pas d'objet de type %m1:8
  923. C
  924. MOTERR(1:8) = 'TABLE '
  925. CALL ERREUR(37)
  926. GOTO 9999
  927. ENDIF
  928. C
  929. C******* Degree des polynoms cv(T)
  930. C
  931. MTYPI = 'MOT '
  932. MTYPR = ' '
  933. CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,'NORD',LOGII,IRETI,
  934. & MTYPR,NORD,XVALR,CHARR,LOGIR,IRETR)
  935. IF(MTYPR .NE. 'ENTIER ')THEN
  936. C
  937. C******* Message d'erreur standard
  938. C -301 0 %m1:40
  939. C
  940. MOTERR(1:40) = 'ARG1 . NORD = ??? '
  941. CALL ERREUR(-301)
  942. C
  943. C******* Message d'erreur standard
  944. C 21 2
  945. C Données incompatibles
  946. C
  947. CALL ERREUR(21)
  948. GOTO 9999
  949. ENDIF
  950. NORDP1 = NORD + 1
  951. C
  952. C******* Nom de l'espece qui n'est pas dans les equations d'Euler
  953. C
  954. MTYPI = 'MOT '
  955. MTYPR = ' '
  956. CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,'ESPNEULE',LOGII,IRETI,
  957. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IESP)
  958. IF(MTYPR .NE. 'MOT ')THEN
  959. C
  960. C******* Message d'erreur standard
  961. C -301 0 %m1:40
  962. C
  963. MOTERR(1:40) = 'ARG1 . ESPNEULE = ??? '
  964. CALL ERREUR(-301)
  965. C
  966. C******* Message d'erreur standard
  967. C 21 2
  968. C Données incompatibles
  969. C
  970. CALL ERREUR(21)
  971. GOTO 9999
  972. ENDIF
  973. C
  974. C**** Les especes qui sont dans les Equations d'Euler
  975. C
  976. MTYPR = ' '
  977. CALL ACMO(IPGAZ,'ESPEULE',MTYPR,MLMOEU)
  978. IF(MTYPR .EQ. ' ')THEN
  979. NESP = 0
  980. IFRMAF = 0
  981. JGN = LOCOMP
  982. JGM = 1
  983. SEGINI MLMOT2
  984. MLMOT2.MOTS(1) = CHARR
  985. LOGME = .FALSE.
  986. ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
  987. C
  988. C******* Message d'erreur standard
  989. C -301 0 %m1:40
  990. C
  991. MOTERR(1:40) = 'ARG1 . ESPEULE = ??? '
  992. CALL ERREUR(-301)
  993. C
  994. C******* Message d'erreur standard
  995. C 21 2
  996. C Données incompatibles
  997. C
  998. CALL ERREUR(21)
  999. GOTO 9999
  1000. ELSE
  1001. LOGME = .TRUE.
  1002. SEGACT MLMOEU
  1003. NESP = MLMOEU.MOTS(/2)
  1004. JGN = LOCOMP
  1005. JGM = NESP + 1
  1006. SEGINI MLMOT2
  1007. DO I1 = 1, NESP
  1008. MLMOT2.MOTS(I1) = MLMOEU.MOTS(I1)
  1009. ENDDO
  1010. MLMOT2.MOTS(NESP+1)=CHARR
  1011. ENDIF
  1012. C
  1013. C**** Les scalaires passifs
  1014. C
  1015. MTYPR = ' '
  1016. CALL ACMO(IPGAZ,'SCALPASS',MTYPR,MLMOSC)
  1017. IF(MTYPR .EQ. ' ')THEN
  1018. LOGSCA = .FALSE.
  1019. NSCA = 0
  1020. ISCAF = 0
  1021. ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
  1022. C
  1023. C******* Message d'erreur standard
  1024. C -301 0 %m1:40
  1025. C
  1026. MOTERR(1:40) = 'ARG1 . SCALPASS = ??? '
  1027. CALL ERREUR(-301)
  1028. C
  1029. C******* Message d'erreur standard
  1030. C 21 2
  1031. C Données incompatibles
  1032. C
  1033. CALL ERREUR(21)
  1034. GOTO 9999
  1035. ELSE
  1036. LOGSCA = .TRUE.
  1037. SEGACT MLMOSC
  1038. NSCA = MLMOSC.MOTS(/2)
  1039. ENDIF
  1040. C
  1041. C**** On rempli les segment PROPHY
  1042. C Ordre: IPGAZ . 'ESPEULE' + IPGAZ . 'ESPNEULE'
  1043. C On controlle aussi la compatibilite des
  1044. C donnes de la table
  1045. C
  1046. SEGINI PROPHY
  1047. C
  1048. C**** N.B. NOMTOT est un CHARACTER*(4)
  1049. C
  1050. DO I1 = 1, NESP+1
  1051. NOMTOT(1) = MLMOT2.MOTS(I1)
  1052. C
  1053. C******* CALL ACMF(...) ne marche pas parce que on a
  1054. C des blanches dans nos composantes
  1055. C
  1056. MTYPI = 'MOT '
  1057. MTYPR = ' '
  1058. CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,NOMTOT(1), LOGII,IRETI,
  1059. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IESP)
  1060. C
  1061. C******* En IESP a la table IPGAZ.NOMTOT(1)
  1062. C
  1063. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'TABLE ')) THEN
  1064.  
  1065. C
  1066. C********** Message d'erreur standard
  1067. C -301 0 %m1:40
  1068. C
  1069. MOTERR = ' '
  1070. MOTERR(1:7) = 'ARG1 . '
  1071. MOTERR(8:11) = NOMTOT(1)
  1072. MOTERR(13:17) = '= ???'
  1073. CALL ERREUR(-301)
  1074. C
  1075. C********** Message d'erreur standard
  1076. C 21 2
  1077. C Données incompatibles
  1078. C
  1079. CALL ERREUR(21)
  1080. GOTO 9999
  1081. ENDIF
  1082. C
  1083. C******* R
  1084. C
  1085. MTYPI = 'MOT '
  1086. MTYPR = ' '
  1087. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'R' , LOGII,IRETI,
  1088. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  1089. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
  1090.  
  1091. C
  1092. C********** Message d'erreur standard
  1093. C -301 0 %m1:40
  1094. C
  1095. MOTERR = ' '
  1096. MOTERR(1:7) = 'ARG1 . '
  1097. MOTERR(8:11) = NOMTOT(1)
  1098. MOTERR(13:23) = ' . R = ??? '
  1099. CALL ERREUR(-301)
  1100. C
  1101. C********** Message d'erreur standard
  1102. C 21 2
  1103. C Données incompatibles
  1104. C
  1105. CALL ERREUR(21)
  1106. GOTO 9999
  1107. ENDIF
  1108. PROPHY.R(I1)=XVALR
  1109. C
  1110. C******* H0K
  1111. C
  1112. MTYPI = 'MOT '
  1113. MTYPR = ' '
  1114. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'H0K' , LOGII,IRETI,
  1115. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  1116. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
  1117.  
  1118. C
  1119. C********** Message d'erreur standard
  1120. C -301 0 %m1:40
  1121. C
  1122. MOTERR = ' '
  1123. MOTERR(1:7) = 'ARG1 . '
  1124. MOTERR(8:11) = NOMTOT(1)
  1125. MOTERR(13:25) = ' . H0K = ??? '
  1126. CALL ERREUR(-301)
  1127. C
  1128. C********** Message d'erreur standard
  1129. C 21 2
  1130. C Données incompatibles
  1131. C
  1132. CALL ERREUR(21)
  1133. GOTO 9999
  1134. ENDIF
  1135. PROPHY.H0K(I1)=XVALR
  1136. C
  1137. C******* A
  1138. C
  1139. MTYPI = 'MOT '
  1140. MTYPR = ' '
  1141. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'A' , LOGII,IRETI,
  1142. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  1143. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'LISTREEL')) THEN
  1144.  
  1145. C
  1146. C********** Message d'erreur standard
  1147. C -301 0 %m1:40
  1148. C
  1149. MOTERR = ' '
  1150. MOTERR(1:7) = 'ARG1 . '
  1151. MOTERR(8:11) = NOMTOT(1)
  1152. MOTERR(13:23) = ' . A = ??? '
  1153. CALL ERREUR(-301)
  1154. C
  1155. C********** Message d'erreur standard
  1156. C 21 2
  1157. C Données incompatibles
  1158. C
  1159. CALL ERREUR(21)
  1160. GOTO 9999
  1161. ENDIF
  1162. MLREEL = IRETR
  1163. SEGACT MLREEL
  1164. C
  1165. C******* Dans le calcul, c'est plus utile ACV dans la forme
  1166. C ACV(,exponente,espece)
  1167. C
  1168. DO I2 = 1, NORDP1
  1169. PROPHY.ACV(I2,I1)= MLREEL.PROG(I2)
  1170. ENDDO
  1171. SEGDES MLREEL
  1172. ENDDO
  1173. SEGSUP MLMOT2
  1174. C
  1175. C**** La table IPGAZ donc a ete controllee et PROPHY est rempli
  1176. C
  1177. C
  1178. C**** Lecture du MCHAML 'FACEL' contenant la masse volumique.
  1179. C
  1180. C D'abord on va lire son nom in KIZX . 'ARG1 ' -> MOTLU
  1181. C
  1182. MOTLU=' '
  1183. CALL ACMM(KIZX,'ARG2 ',MOTLU)
  1184. IF(IERR.NE.0) GOTO 9999
  1185. C
  1186. C**** On va lire le pointeur du MCHAML
  1187. C
  1188. TYPE='MCHAML '
  1189. CALL ACMO(INCO,MOTLU,TYPE,IROF)
  1190. IF(IERR.NE.0) GOTO 9999
  1191. IF(TYPE .NE. 'MCHAML ')THEN
  1192. C
  1193. C******* Message d'erreur standard
  1194. C 37 2
  1195. C On ne trouve pas d'objet de type %m1:8
  1196. C
  1197. MOTERR(1:8) = 'MCHAML '
  1198. CALL ERREUR(37)
  1199. GOTO 9999
  1200. ENDIF
  1201. C
  1202. C**** Lecture du MCHAML 'FACEL' vitesse
  1203. C
  1204. MOTLU=' '
  1205. CALL ACMM(KIZX,'ARG3 ',MOTLU)
  1206. IF(IERR.NE.0)GOTO 9999
  1207. C
  1208. TYPE='MCHAML '
  1209. CALL ACMO(INCO,MOTLU,TYPE,IVITF)
  1210. IF(IERR .NE. 0) GOTO 9999
  1211. IF(TYPE .NE. 'MCHAML ')THEN
  1212. C
  1213. C******* Message d'erreur standard
  1214. C 37 2
  1215. C On ne trouve pas d'objet de type %m1:8
  1216. C
  1217. MOTERR(1:8) = 'MCHAML '
  1218. CALL ERREUR(37)
  1219. GOTO 9999
  1220. ENDIF
  1221. C
  1222. C***** Lecture du MCHAML 'FACEL' contenant la temperature
  1223. C
  1224. MOTLU=' '
  1225. CALL ACMM(KIZX,'ARG4 ',MOTLU)
  1226. IF(IERR .NE. 0) GOTO 9999
  1227. C
  1228. TYPE='MCHAML '
  1229. CALL ACMO(INCO,MOTLU,TYPE,IPF)
  1230. IF(IERR .NE. 0) GOTO 9999
  1231. IF(TYPE .NE. 'MCHAML ')THEN
  1232. C
  1233. C******* Message d'erreur standard
  1234. C 37 2
  1235. C On ne trouve pas d'objet de type %m1:8
  1236. C
  1237. MOTERR(1:8) = 'MCHAML '
  1238. CALL ERREUR(37)
  1239. GOTO 9999
  1240. ENDIF
  1241. C
  1242. C
  1243. C**** Multi-especes (LOGME = .TRUE.)
  1244. C Scalaires à transporter (LOGSCA = .TRUE.)
  1245. C
  1246. C
  1247. IF(LOGME .AND. LOGSCA)THEN
  1248. C
  1249. C********** On controle si KIZX . 'ARG5' et KIZX . 'ARG6' existent
  1250. C
  1251. TYPE = ' '
  1252. MOTLU=' '
  1253. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG5', .TRUE.,0,
  1254. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1255. IF(TYPE .EQ. 'MOT')THEN
  1256. C
  1257. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1258. C
  1259. C
  1260. TYPE='MCHAML '
  1261. CALL ACMO(INCO,MOTLU,TYPE,IFRMAF)
  1262. IF(IERR .NE. 0) GOTO 9999
  1263. IF(TYPE .NE. 'MCHAML ')THEN
  1264. C
  1265. C************* Message d'erreur standard
  1266. C 37 2
  1267. C On ne trouve pas d'objet de type %m1:8
  1268. C
  1269. MOTERR(1:8) = 'MCHAML '
  1270. CALL ERREUR(37)
  1271. GOTO 9999
  1272. ENDIF
  1273. ELSE
  1274. C
  1275. C********** Message d'erreur standard
  1276. C 21 2
  1277. C Données incompatibles
  1278. C
  1279. CALL ERREUR(21)
  1280. GO TO 9999
  1281. ENDIF
  1282. C
  1283. TYPE = ' '
  1284. MOTLU=' '
  1285. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG6', .TRUE.,0,
  1286. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1287. IF(TYPE .EQ. 'MOT')THEN
  1288. C
  1289. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1290. C
  1291. C
  1292. TYPE='MCHAML '
  1293. CALL ACMO(INCO,MOTLU,TYPE,ISCAF)
  1294. IF(IERR .NE. 0) GOTO 9999
  1295. IF(TYPE .NE. 'MCHAML ')THEN
  1296. C
  1297. C************* Message d'erreur standard
  1298. C 37 2
  1299. C On ne trouve pas d'objet de type %m1:8
  1300. C
  1301. MOTERR(1:8) = 'MCHAML '
  1302. CALL ERREUR(37)
  1303. GOTO 9999
  1304. ENDIF
  1305. ELSE
  1306. C
  1307. C********** Message d'erreur standard
  1308. C 21 2
  1309. C Données incompatibles
  1310. C
  1311. CALL ERREUR(21)
  1312. GO TO 9999
  1313. ENDIF
  1314. C
  1315. ELSEIF(LOGME)THEN
  1316. C
  1317. C********** On controle si KIZX . 'ARG5' existe
  1318. C
  1319. TYPE = ' '
  1320. MOTLU=' '
  1321. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG5', .TRUE.,0,
  1322. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1323. IF(TYPE .EQ. 'MOT')THEN
  1324. C
  1325. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1326. C
  1327. C
  1328. TYPE='MCHAML '
  1329. CALL ACMO(INCO,MOTLU,TYPE,IFRMAF)
  1330. IF(IERR .NE. 0) GOTO 9999
  1331. IF(TYPE .NE. 'MCHAML ')THEN
  1332. C
  1333. C************* Message d'erreur standard
  1334. C 37 2
  1335. C On ne trouve pas d'objet de type %m1:8
  1336. C
  1337. MOTERR(1:8) = 'MCHAML '
  1338. CALL ERREUR(37)
  1339. GOTO 9999
  1340. ENDIF
  1341. ELSE
  1342. C
  1343. C********** Message d'erreur standard
  1344. C 21 2
  1345. C Données incompatibles
  1346. C
  1347. CALL ERREUR(21)
  1348. GO TO 9999
  1349. ENDIF
  1350. ELSEIF(LOGSCA)THEN
  1351. C
  1352. C********** On controle si KIZX . 'ARG5' existe
  1353. C
  1354. TYPE = ' '
  1355. MOTLU=' '
  1356. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG5', .TRUE.,0,
  1357. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1358. IF(TYPE .EQ. 'MOT')THEN
  1359. C
  1360. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1361. C
  1362. TYPE='MCHAML '
  1363. CALL ACMO(INCO,MOTLU,TYPE,ISCAF)
  1364. IF(IERR .NE. 0) GOTO 9999
  1365. IF(TYPE .NE. 'MCHAML ')THEN
  1366. C
  1367. C************* Message d'erreur standard
  1368. C 37 2
  1369. C On ne trouve pas d'objet de type %m1:8
  1370. C
  1371. MOTERR(1:8) = 'MCHAML '
  1372. CALL ERREUR(37)
  1373. GOTO 9999
  1374. ENDIF
  1375. ELSE
  1376. C
  1377. C********** Message d'erreur standard
  1378. C 21 2
  1379. C Données incompatibles
  1380. C
  1381. CALL ERREUR(21)
  1382. GO TO 9999
  1383. ENDIF
  1384. ENDIF
  1385. C
  1386. C******* Lecture de Nom des Inconnues de KONV (KIZX . 'LISTINCO')
  1387. C
  1388. TYPE='LISTMOTS'
  1389. CALL ACMO(KIZX,'LISTINCO',TYPE,LINCO)
  1390. MLMOT1 = LINCO
  1391. IF(IERR.NE.0)GOTO 9999
  1392. SEGACT MLMOT1
  1393. C
  1394. C******* Verification du Nombre d'inconnues.
  1395. C
  1396. C Eulero mono-espece (+ scalaires passifs) -> NBRINC = 3 (+1)
  1397. C Eulero multi-especies (+ scalaires passifs) -> NBRINC = 4 (+1)
  1398. C
  1399. NBRINC = MLMOT1.MOTS(/2)
  1400. NCELL = 3
  1401. IF(LOGME) NCELL = NCELL + 1
  1402. IF(LOGSCA) NCELL = NCELL + 1
  1403. IF(NBRINC .NE. NCELL)THEN
  1404. C
  1405. C********** Message d'erreur standard
  1406. C -301 0 %m1:40
  1407. C
  1408. MOTERR(1:40) ='EULERMST: LISTINCO = ? '
  1409. CALL ERREUR(-301)
  1410. C
  1411. C*********** Message d'erreur standard
  1412. C 21 2 Données incompatibles
  1413. C
  1414. CALL ERREUR(21)
  1415. GO TO 9999
  1416. ENDIF
  1417. C
  1418. C******* Table DOMAINE en IDOMA (pointeur de la zone de KONV)
  1419. C
  1420. C
  1421. C******* Lecture du MELEME SPG des points CENTRE.
  1422. C
  1423. C
  1424. C CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  1425. C
  1426. C******* Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  1427. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  1428. C -> la correspondance global des noeuds saut!
  1429. C
  1430. C On peut utilizer ACCTAB ou ACMO
  1431. C
  1432. TYPE = 'MAILLAGE'
  1433. CALL ACMO(IDOMA,'CENTRE',TYPE,MELEMC)
  1434. IF(IERR .NE. 0) GOTO 9999
  1435. IF(TYPE .NE. 'MAILLAGE')THEN
  1436. MOTERR(1:8) = NOMZ
  1437. MOTERR(9:40) = ' . CENTRE = ? '
  1438. C
  1439. C********** Message d'erreur standard
  1440. C -301 0 %m1:40
  1441. C
  1442. CALL ERREUR(-301)
  1443. C
  1444. C********** Message d'erreur standard
  1445. C 21 2
  1446. C Données incompatibles
  1447. C
  1448. CALL ERREUR(21)
  1449. GO TO 9999
  1450. ENDIF
  1451. C
  1452. C******* Lecture du MELEME 'FACE' SPG des points FACE
  1453. C
  1454. CALL ACMO(IDOMA,'FACE',TYPE,MELEMF)
  1455. IF(IERR .NE. 0) GOTO 9999
  1456. IF(TYPE .NE. 'MAILLAGE')THEN
  1457. MOTERR(1:8) = NOMZ
  1458. MOTERR(9:40) = ' . FACE = ? '
  1459. C
  1460. C********** Message d'erreur standard
  1461. C -301 0 %m1:40
  1462. C
  1463. CALL ERREUR(-301)
  1464. C
  1465. C********** Message d'erreur standard
  1466. C 21 2
  1467. C Données incompatibles
  1468. C
  1469. CALL ERREUR(21)
  1470. GO TO 9999
  1471. ENDIF
  1472. C
  1473. C******* Lecture du MELEME 'FACEL' de connect. FACE -> CENTRE
  1474. C
  1475. CALL ACMO(IDOMA,'FACEL',TYPE,MELEFE)
  1476. IF(IERR .NE. 0) GOTO 9999
  1477. IF(TYPE .NE. 'MAILLAGE')THEN
  1478. MOTERR(1:8) = NOMZ
  1479. MOTERR(9:40) = ' . FACEL = ? '
  1480. C
  1481. C******* Message d'erreur standard
  1482. C -301 0 %m1:40
  1483. C
  1484. CALL ERREUR(-301)
  1485. C
  1486. C******* Message d'erreur standard
  1487. C 21 2
  1488. C Données incompatibles
  1489. C
  1490. CALL ERREUR(21)
  1491. GO TO 9999
  1492. ENDIF
  1493. C
  1494. C**** Lecture du CHPOINT contenant les surfaces des faces.
  1495. C
  1496. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  1497. IF(IERR .NE. 0) GOTO 9999
  1498. C
  1499. C**** Lecture du CHPOINT contenant les diametres minimums.
  1500. C
  1501. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  1502. IF(IERR .NE. 0) GOTO 9999
  1503. C
  1504. C
  1505. C**** Lecture de la TABLE contenant les FLUX aux interfaces,
  1506. C i.e. KIZX . 'EQEX' . 'KIZG'
  1507. C
  1508. C N.B. On recuper le pointeur des flux relatives aux
  1509. C inconnues de KONV.
  1510. C
  1511. TYPE= ' '
  1512. CALL ACMO(IEQEX,'KIZG',TYPE,KIZG)
  1513. IF(IERR .NE. 0) GOTO 9999
  1514. IF(TYPE .NE. 'TABLE ')THEN
  1515. CALL CRTABL(KIZG)
  1516. CALL ECMM(KIZG,'SOUSTYPE','KIZG')
  1517. CALL ECMO(IEQEX,'KIZG','TABLE ',KIZG)
  1518. ENDIF
  1519. C
  1520. C**** Creation des CHPOINTs increment IZG1-2-3-4 pour les FLUX
  1521. C ou extraction des leurs pointeurs
  1522. C
  1523. C
  1524. C**** La masse volumique
  1525. C
  1526. C
  1527. TYPE=' '
  1528. ARG = MLMOT1.MOTS(1)
  1529. CALL ACMO(KIZG,ARG,TYPE,IZG1)
  1530. IF(IERR .NE. 0) GOTO 9999
  1531. IF(TYPE .NE. 'CHPOINT ')THEN
  1532. TYPE = 'FACE'
  1533. NBCOMP = 1
  1534. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG1)
  1535. IF(IERR .NE. 0)GOTO 9999
  1536. C
  1537. C******* Stokage du pointeur dans KIZG
  1538. C
  1539. ARG = MLMOT1.MOTS(1)
  1540. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG1)
  1541. ELSE
  1542. INDIC = 1
  1543. NBCOMP = 1
  1544. NOMTOT(1) = ' '
  1545. CALL QUEPOI(IZG1,MELEMF,INDIC,NBCOMP,NOMTOT)
  1546. IF(IERR .NE. 0)GOTO 9999
  1547. ENDIF
  1548. C
  1549. C**** Les debits
  1550. C
  1551. TYPE=' '
  1552. ARG = MLMOT1.MOTS(2)
  1553. CALL ACMO(KIZG,ARG,TYPE,IZG2)
  1554. IF(IERR .NE. 0) GOTO 9999
  1555. IF(TYPE .NE. 'CHPOINT ')THEN
  1556. TYPE='FACE'
  1557. NBCOMP = IDIM
  1558. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG2)
  1559. IF(IERR .NE. 0) GOTO 9999
  1560. C
  1561. C******* Stokage du pointeur dans KIZG
  1562. C
  1563. ARG = MLMOT1.MOTS(2)
  1564. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG2)
  1565. ELSE
  1566. INDIC = 1
  1567. NBCOMP = IDIM
  1568. NOMTOT(1) = ' '
  1569. CALL QUEPOI(IZG2,MELEMF,INDIC,NBCOMP,NOMTOT)
  1570. IF(IERR .NE. 0)GOTO 9999
  1571. ENDIF
  1572. C
  1573. C**** L'energie totale volumique
  1574. C
  1575. TYPE=' '
  1576. ARG = MLMOT1.MOTS(3)
  1577. CALL ACMO(KIZG,ARG,TYPE,IZG3)
  1578. IF(IERR .NE. 0) GOTO 9999
  1579. IF(TYPE .NE. 'CHPOINT ')THEN
  1580. TYPE='FACE'
  1581. NBCOMP = 1
  1582. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG3)
  1583. IF(IERR .NE. 0) GOTO 9999
  1584. C
  1585. C******* Stokage du pointeur dans KIZG
  1586. C
  1587. ARG = MLMOT1.MOTS(3)
  1588. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG3)
  1589. ELSE
  1590. INDIC = 1
  1591. NBCOMP = 1
  1592. NOMTOT(1) = ' '
  1593. CALL QUEPOI(IZG3,MELEMF,INDIC,NBCOMP,NOMTOT)
  1594. IF(IERR .NE. 0)GOTO 9999
  1595. ENDIF
  1596. C
  1597. C**** Les Masses Volumiques et les (scalaires passifs * \rho)
  1598. C
  1599. IF(LOGME .AND. LOGSCA)THEN
  1600. C
  1601. C********** Masses volumiques
  1602. C
  1603. TYPE=' '
  1604. ARG = MLMOT1.MOTS(4)
  1605. CALL ACMO(KIZG,ARG,TYPE,IZG4)
  1606. IF(IERR .NE. 0) GOTO 9999
  1607. IF(TYPE .NE. 'CHPOINT ')THEN
  1608. NBCOMP = NESP
  1609. TYPE='FACE '
  1610. C
  1611. C********** On cree le chpoint FACE
  1612. C
  1613. IPT1 = MELEMF
  1614. SEGACT IPT1
  1615. N=IPT1.NUM(/2)
  1616. SEGDES IPT1
  1617. NSOUPO=1
  1618. NAT=1
  1619. NC = NESP
  1620. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1621. MCHPOI.JATTRI(1)=2
  1622. MCHPOI.IFOPOI=IFOUR
  1623. MCHPOI.MTYPOI=TYPE
  1624. MCHPOI.MOCHDE(1:30)=' '
  1625. MCHPOI.MOCHDE(31:60)=' '
  1626. MCHPOI.MOCHDE(61:72)=' '
  1627. MCHPOI.IPCHP(1)=MSOUPO
  1628. SEGDES MCHPOI
  1629. MSOUPO.IGEOC=MELEMF
  1630. MSOUPO.IPOVAL=MPOVAL
  1631. DO I1 = 1, NC
  1632. MSOUPO.NOCOMP(I1) = MLMOEU.MOTS(I1)
  1633. ENDDO
  1634. SEGDES, MSOUPO,MPOVAL
  1635. IZG4 = MCHPOI
  1636. C
  1637. C********** Stokage du pointeur dans KIZG
  1638. C
  1639. ARG = MLMOT1.MOTS(4)
  1640. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG4)
  1641. ELSE
  1642. INDIC = 1
  1643. NBCOMP = NESP
  1644. NOMTOT(1) = ' '
  1645. CALL QUEPOI(IZG4,MELEMF,INDIC,NBCOMP,NOMTOT)
  1646. IF(IERR .NE. 0)GOTO 9999
  1647. ENDIF
  1648. C
  1649. C********** Les scalaires passifs
  1650. C
  1651. TYPE=' '
  1652. ARG = MLMOT1.MOTS(5)
  1653. CALL ACMO(KIZG,ARG,TYPE,IZG5)
  1654. IF(IERR .NE. 0) GOTO 9999
  1655. IF(TYPE .NE. 'CHPOINT ')THEN
  1656. NBCOMP = NSCA
  1657. TYPE='FACE '
  1658. C
  1659. C********** On cree le chpoint FACE
  1660. C
  1661. IPT1 = MELEMF
  1662. SEGACT IPT1
  1663. N=IPT1.NUM(/2)
  1664. SEGDES IPT1
  1665. NSOUPO=1
  1666. NAT=1
  1667. NC = NSCA
  1668. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1669. MCHPOI.JATTRI(1)=2
  1670. MCHPOI.IFOPOI=IFOUR
  1671. MCHPOI.MTYPOI=TYPE
  1672. MCHPOI.MOCHDE(1:30)=' '
  1673. MCHPOI.MOCHDE(31:60)=' '
  1674. MCHPOI.MOCHDE(61:72)=' '
  1675. MCHPOI.IPCHP(1)=MSOUPO
  1676. SEGDES MCHPOI
  1677. MSOUPO.IGEOC=MELEMF
  1678. MSOUPO.IPOVAL=MPOVAL
  1679. DO I1 = 1, NC
  1680. MSOUPO.NOCOMP(I1) = MLMOSC.MOTS(I1)
  1681. ENDDO
  1682. SEGDES, MSOUPO,MPOVAL
  1683. IZG5 = MCHPOI
  1684. C
  1685. C********** Stokage du pointeur dans KIZG
  1686. C
  1687. ARG = MLMOT1.MOTS(5)
  1688. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG5)
  1689. ELSE
  1690. INDIC = 1
  1691. NBCOMP = NSCA
  1692. NOMTOT(1) = ' '
  1693. CALL QUEPOI(IZG5,MELEMF,INDIC,NBCOMP,NOMTOT)
  1694. IF(IERR .NE. 0)GOTO 9999
  1695. ENDIF
  1696. C
  1697. ELSEIF(LOGME)THEN
  1698. C
  1699. C********** Masses volumiques
  1700. C
  1701. TYPE=' '
  1702. ARG = MLMOT1.MOTS(4)
  1703. CALL ACMO(KIZG,ARG,TYPE,IZG4)
  1704. IF(IERR .NE. 0) GOTO 9999
  1705. IF(TYPE .NE. 'CHPOINT ')THEN
  1706. NBCOMP = NESP
  1707. TYPE='FACE '
  1708. C
  1709. C********** On cree le chpoint FACE
  1710. C
  1711. IPT1 = MELEMF
  1712. SEGACT IPT1
  1713. N=IPT1.NUM(/2)
  1714. SEGDES IPT1
  1715. NSOUPO=1
  1716. NAT=1
  1717. NC = NESP
  1718. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1719. MCHPOI.JATTRI(1)=2
  1720. MCHPOI.IFOPOI=IFOUR
  1721. MCHPOI.MTYPOI=TYPE
  1722. MCHPOI.MOCHDE(1:30)=' '
  1723. MCHPOI.MOCHDE(31:60)=' '
  1724. MCHPOI.MOCHDE(61:72)=' '
  1725. MCHPOI.IPCHP(1)=MSOUPO
  1726. SEGDES MCHPOI
  1727. MSOUPO.IGEOC=MELEMF
  1728. MSOUPO.IPOVAL=MPOVAL
  1729. DO I1 = 1, NC
  1730. MSOUPO.NOCOMP(I1) = MLMOEU.MOTS(I1)
  1731. ENDDO
  1732. SEGDES, MSOUPO,MPOVAL
  1733. IZG4 = MCHPOI
  1734. C
  1735. C********** Stokage du pointeur dans KIZG
  1736. C
  1737. ARG = MLMOT1.MOTS(4)
  1738. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG4)
  1739. ELSE
  1740. INDIC = 1
  1741. NBCOMP = NESP
  1742. NOMTOT(1) = ' '
  1743. CALL QUEPOI(IZG4,MELEMF,INDIC,NBCOMP,NOMTOT)
  1744. IF(IERR .NE. 0)GOTO 9999
  1745. ENDIF
  1746. IZG5 = 0
  1747. ELSEIF(LOGSCA)THEN
  1748. C
  1749. C********** Masses volumiques
  1750. C
  1751. IZG4 = 0
  1752. TYPE=' '
  1753. ARG = MLMOT1.MOTS(4)
  1754. CALL ACMO(KIZG,ARG,TYPE,IZG5)
  1755. IF(IERR .NE. 0) GOTO 9999
  1756. IF(TYPE .NE. 'CHPOINT ')THEN
  1757. NBCOMP = NSCA
  1758. TYPE='FACE '
  1759. C
  1760. C********** On cree le chpoint FACE
  1761. C
  1762. IPT1 = MELEMF
  1763. SEGACT IPT1
  1764. N=IPT1.NUM(/2)
  1765. SEGDES IPT1
  1766. NSOUPO=1
  1767. NAT=1
  1768. NC = NSCA
  1769. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1770. MCHPOI.JATTRI(1)=2
  1771. MCHPOI.IFOPOI=IFOUR
  1772. MCHPOI.MTYPOI=TYPE
  1773. MCHPOI.MOCHDE(1:30)=' '
  1774. MCHPOI.MOCHDE(31:60)=' '
  1775. MCHPOI.MOCHDE(61:72)=' '
  1776. MCHPOI.IPCHP(1)=MSOUPO
  1777. SEGDES MCHPOI
  1778. MSOUPO.IGEOC=MELEMF
  1779. MSOUPO.IPOVAL=MPOVAL
  1780. DO I1 = 1, NC
  1781. MSOUPO.NOCOMP(I1) = MLMOSC.MOTS(I1)
  1782. ENDDO
  1783. SEGDES, MSOUPO,MPOVAL
  1784. IZG5 = MCHPOI
  1785. C
  1786. C********** Stokage du pointeur dans KIZG
  1787. C
  1788. ARG = MLMOT1.MOTS(4)
  1789. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG5)
  1790. ELSE
  1791. INDIC = 1
  1792. NBCOMP = NSCA
  1793. NOMTOT(1) = ' '
  1794. CALL QUEPOI(IZG5,MELEMF,INDIC,NBCOMP,NOMTOT)
  1795. IF(IERR .NE. 0)GOTO 9999
  1796. ENDIF
  1797. ELSE
  1798. IZG4 = 0
  1799. IZG5 = 0
  1800. ENDIF
  1801. C
  1802. C**** Calcul des flux et du pas du temps.
  1803. C
  1804. IF( IDIM .EQ. 2)THEN
  1805. C
  1806. C
  1807. C***** 2D
  1808. C
  1809. CALL CKON3(LOGME,INDMET,NORDP1,
  1810. & IROF,IVITF,IPF,IFRMAF,ISCAF,PROPHY,
  1811. & ICHPSU,ICHPDI,
  1812. & MELEMC,MELEMF,MELEFE,
  1813. & IZG1,IZG2,IZG3,IZG4,IZG5,DT,DIAMEL,NLCEMI,
  1814. & LOGNC,LOGAN,MESERR)
  1815. ELSE
  1816. C
  1817. C
  1818. C***** 3D
  1819. C
  1820. CALL CKON4(LOGME,INDMET,NORDP1,
  1821. & IROF,IVITF,IPF,IFRMAF,ISCAF,PROPHY,
  1822. & ICHPSU,ICHPDI,
  1823. & MELEMC,MELEMF,MELEFE,
  1824. & IZG1,IZG2,IZG3,IZG4,IZG5,DT,DIAMEL,NLCEMI,
  1825. & LOGNC,LOGAN,MESERR)
  1826. ENDIF
  1827. C
  1828. IF(LOGAN)THEN
  1829. C
  1830. C******* Anomalie detectée
  1831. C
  1832. C
  1833. C******* Message d'erreur standard
  1834. C -301 0
  1835. C %m1:40
  1836. C
  1837. MOTERR(1:40) = MESERR(1:40)
  1838. CALL ERREUR(-301)
  1839. C
  1840. C******* Message d'erreur standard
  1841. C 5 3
  1842. C Erreur anormale.contactez votre support
  1843. C
  1844. CALL ERREUR(5)
  1845. GOTO 9999
  1846. ENDIF
  1847. IF(LOGNC)THEN
  1848. C
  1849. C******* Message d'erreur standard
  1850. C -301 0
  1851. C %m1:40
  1852. C
  1853. MOTERR(1:40) = MESERR(1:40)
  1854. CALL ERREUR(-301)
  1855. C
  1856. C******* Message d'erreur standard
  1857. C 460 2
  1858. C Pas de convergence dans les itérations internes
  1859. C
  1860. CALL ERREUR(460)
  1861. GOTO 9999
  1862. ENDIF
  1863. C
  1864. C**** Ecriture des RESULTATS
  1865. C
  1866. TYPE = 'TABLE '
  1867. CALL ACMO(IEQEX,'PASDETPS',TYPE,MTABT)
  1868. IF(IERR .NE. 0) GOTO 9999
  1869. IF(TYPE .NE. 'TABLE ')THEN
  1870. MOTERR(1:40) = 'EULER, subroutine ckon.eso, PASDETPS = ?'
  1871. C
  1872. C******* Message d'erreur standard
  1873. C -301 0 %m1:40
  1874. C
  1875. CALL ERREUR(-301)
  1876. C
  1877. C******* Message d'erreur standard
  1878. C 5 3
  1879. C Erreur anormale.contactez votre support
  1880. C
  1881. CALL ERREUR(5)
  1882. GO TO 9999
  1883. ENDIF
  1884. C
  1885. C******* On remplie la table d'indice PASDETPS
  1886. C
  1887. CALL ECMF(MTABT,'DELTAT',DT)
  1888. CALL ECMM(MTABT,'OPER','KONV')
  1889. CALL ECMM(MTABT,'ZONE',NOMZ)
  1890. CALL ECMF(MTABT,'DTCONV',DT)
  1891. CALL ECMF(MTABT,'DTDIFU',1.0D50)
  1892. CALL ECMF(MTABT,'DIAEL',DIAMEL)
  1893. CALL ECME(MTABT,'NUEL',NLCEMI)
  1894. C
  1895. C**** Ecriture des CHPOINTs increments dans la table KIZG
  1896. C déjà faite
  1897. C
  1898. SEGDES MLMOT1
  1899. SEGSUP PROPHY
  1900. IF(LOGME) SEGDES MLMOEU
  1901. IF(LOGSCA) SEGDES MLMOSC
  1902. C
  1903. C
  1904. C
  1905. ENDIF
  1906. 9999 CONTINUE
  1907. RETURN
  1908. END
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  

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